PHP使用Yii2实现Facebook(Api)授权登录并获取信息Demo
- 7685
- PHP
- 26
- super_dodo
- 2016/11/08
在已经安装好相关的扩展的情况下(若未安装Yii2的扩展请移步参考底部的安转的相关文章),注册开发者账号,配置开发者相关的信息。
之后直接上代码:FacebookController.php
<?php
/**
* User: Dodobook
* Date: 2016/11/1 08:08:08
*/
namespace app\controllers;
use Yii;
use yii\httpclient\Client;
use yii\web\Controller;
use yii\authclient\clients\Facebook;
//此部分为直接使用官方的文档实践.
//使用Yii的扩展yii\authclient
//备注说明: 需要设置应用域名
//https://developers.facebook.com/docs/php/gettingstarted
//https://developers.facebook.com/docs/php/gettingstarted#install-manually
//https://developers.facebook.com/apps/30***********29/settings/basic/
class FacebookController extends Controller{
const APP_ID = '30**********29';
const APP_SECRET = '1a***********************46';
const VERSION = 'v2.5'; //版本
CONST USER_INFO_URL = 'https://graph.facebook.com/me/?access_token='; //获得用户的基本信息
CONST USER_FRIEND_URL = 'https://graph.facebook.com/me/friends?access_token='; //获得用户的好友
//授权地址
public function actionAuthUrl(){
//实例化类
$client = new Facebook([
'clientId' => self::APP_ID,
'clientSecret' => self::APP_SECRET,
'version' => self::VERSION,
]);
$param = ['redirect_uri'=>'http://sns.*******.com/facebook/call-back'];
$url = $client->buildAuthUrl($param); //组装成新的URL地址
$url .= '&force_login=true'; //强制用户登录(not work)
return Yii::$app->getResponse()->redirect($url); //跳转到授权的页面
}
//回调地址
public function actionCallBack(){
$client = new Facebook([
'clientId' => self::APP_ID,
'clientSecret' => self::APP_SECRET,
'version' => self::VERSION,
]);
$authCode = Yii::$app->request->get('code');
$token = $client->fetchAccessToken($authCode);
$access_token = $token->getParam('access_token'); //185+-个字符
$expires = $token->getParam('expires'); //过期时间--5184000 = 6天
$appsecret_proof = hash_hmac('sha256', $access_token, self::APP_SECRET); //加密安全
$userUrl = self::USER_INFO_URL.$access_token.'&appsecret_proof='.$appsecret_proof; //获取用户信息
$userClient = new Client();
$request = $userClient->get($userUrl);
$response = $userClient->send($request);
if($response->getIsOk()){ //请求接口成功
$backData = $response->getData();
var_dump($backData); //打印一下回调回来的用户数据
$userId = $backData['id'] ?? 0;
}
/*
[id] => 14********82
[email] => dev@*******.cn
[first_name] => **
[gender] => male
[last_name] => 林
[link] => https://www.facebook.com/app_scoped_user_id/14*********82/
[locale] => zh_CN
[name] => 林**
[timezone] => 8
[updated_time] => 2014-10-29T06:45:10+0000
[verified] => 1
*/
//TODO 你想做的任何事情
Yii::$app->end();
}
//得到用户的基本信息
public function actionUserInfo(){
$client = new Facebook([
'clientId' => self::APP_ID,
'clientSecret' => self::APP_SECRET,
'version' => self::VERSION,
]);
$accessToken = 'EAAE********************jUwjA'; //很长--大概185个字符左右
$url = 'https://graph.facebook.com/me/?access_token='.$accessToken; //用户的信息页面
$url = 'https://graph.facebook.com/me/friends?access_token='.$accessToken; //好友列表
return Yii::$app->getResponse()->redirect($url);
}
}
PHP使用Yii2实现Twitter授权登录并获取信息Demo
相关阅读
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
热门文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
最新文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例

