PHP使用Yii2实现Facebook(Api)授权登录并获取信息Demo
- 7397
- 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的使用示例