yii2.0 facebook第三方登录 [ 2.0 版本 ]
本文转载于萝卜也爱疯狂
登录开发者中心创建应用
https://developers.facebook.com/?ref=pf
下载php sdk
https://developers.facebook.com/docs/reference/php
接下来整合到yii2.0 框架中
将facebook文件放到vendor\yiisoft\yii2目录中
修改原来的命名空间 namespace Facebook; 改为 namespace yii\Facebook; 所有的Facebook前加上yii\;
use yii\Facebook\Authentication\AccessToken; 同样也都加上yii\;
创建登录文件
login.php
use yii\Facebook\Facebook;
//如果有报文件找不到,请加上下面这句
require(__DIR__ . '/../vendor/yiisoft/yii2/Facebook/autoload.php');//引入自动加载文件
$fb = new Facebook([
'app_id' => '{app-id}', //创建应用的id
'app_secret' => '{app-secret}',//创建应用的密钥
'default_graph_version' => 'v2.2',//sdk版本号
]);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email']; // Optional permissions
$loginUrl = $helper->getLoginUrl('https://example.com/fb-callback.php', $permissions);
echo '<a href="' . htmlspecialchars($loginUrl) . '">Log in with Facebook!</a>';
//回调文件
//fb-callback.php 这里需要在应用指定回调url 如果是app后端处理则不用
use yii\Facebook\Facebook;
require(__DIR__ . '/../vendor/yiisoft/yii2/Facebook/autoload.php');//引入自动加载文件
$fb = new Facebook([
'app_id' => '{app-id}', //创建应用的id
'app_secret' => '{app-secret}',//创建应用的密钥
'default_graph_version' => 'v2.2',//sdk版本号
]);
$fbApp = $fb->getApp();
// me?fields=email,name,gender,picture'表示要取的数据字段名
//$accessToken facebook返回的token
$request = new FacebookRequest($fbApp, $accessToken,
'GET', '/me?fields=email,name,gender,picture');
try {
$response = $fb->getClient()->sendRequest($request);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$graphNode = $response->getGraphNode();
$email = $graphNode->getField('email');//取登录用户的email
整个demo就完成了
zhouping
注册时间:2016-06-17
最后登录:2018-02-02
在线时长:10小时53分
最后登录:2018-02-02
在线时长:10小时53分
- 粉丝1
- 金钱95
- 威望20
- 积分395
共 0 条评论