PHP使用Yii2实现Twitter(Api)授权登录并获取信息Demo
- 8583
- PHP
- 35
- super_dodo
- 2016/11/08
在已经安装好相关的扩展的情况下(若未安装Yii2的扩展请移步参考底部的安转的相关文章),注册开发者账号,配置开发者相关的信息。初步的配置信息如下所示。
之后直接上代码:TwitterController.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\OAuthToken; use yii\authclient\clients\Twitter; //使用Yii的扩展yii\authclient //1:生成授权的地址 //2:回调地址得到相关的用户token等信息 //https://api.twitter.com/oauth/authenticate?oauth_token=f9__j******************zA //https://apps.twitter.com/app/*****************/settings //https://dev.twitter.com/web/overview //https://dev.twitter.com/rest/tools/console //https://dev.twitter.com/web/sign-in/implementing //http://www.yiiframework.com/doc-2.0/yii-authclient-clients-twitter.html class TwitterController extends Controller{ CONST consumerKey = 't*******************O'; //Consumer Key CONST consumerSecret = 'h*******************************************q'; //Consumer Secret //授权地址 public function actionAuthUrl(){ $client = new Twitter([ 'consumerKey' => self::consumerKey, 'consumerSecret' => self::consumerSecret ]); $param = ['oauth_callback'=>'http://sns.*********.com/twitter/call-back']; //配置回调地址--尽量和后台设置的保持相近 $requestToken = $client->fetchRequestToken($param); //得到相应的oauth_token $requestToken->setToken($requestToken->token); //保存下来--回调的地方要验证--设置之后--回调的token也是这个 $url = $client->buildAuthUrl($requestToken); //组装成新的URL地址 $url .= '&force_login=true'; //强制用户登录--用户授权过也会需要用户登录一下 return Yii::$app->getResponse()->redirect($url); //跳转到授权的页面 } //回调地址---授权成功之后 public function actionCallBack(){ $oauth_token = Yii::$app->request->get('oauth_token'); //得到oauth_token $oauth_verifier = Yii::$app->request->get('oauth_verifier'); //得到oauth_verifier $client = new Twitter([ 'consumerKey' => self::consumerKey, 'consumerSecret' => self::consumerSecret ]); //得到requestToken $requestToken = $client->fetchRequestToken(); $requestToken->setToken($oauth_token); //设置一下requsetToken //通过参数去得到用户的oauth_token以及oauth_token_secret $accessToken = $client->fetchAccessToken($oauth_token,$requestToken,$oauth_verifier); // var_dump($accessToken); //打印一下,方便调试 $user_token = $accessToken->getToken(); //得到access_token的值 $user_token_secret = $accessToken->getTokenSecret(); //得到access_token_secret的值 $user_id = $accessToken->getParam('user_id'); //用户ID $user_screen_name = $accessToken->getParam('screen_name'); //用户账号 $x_auth_expires = $accessToken->getParam('x_auth_expires'); //过期时间 0 echo $user_id.'<hr>'; echo $user_token.'<hr>'; echo $user_token_secret.'<hr>'; echo $user_screen_name.'<hr>'; //建立一张表--存储该内容---你自己决定 Yii::$app->end(); } //得到单个用户的时间线 public function actionHomeLine(){ $access_token = '7******************************************5'; //某个用户的access_token $access_token_secret = 'N****************************************s'; //某个用户的access_token_secret // create your OAuthToken $token = new OAuthToken([ 'token' => $access_token, 'tokenSecret' => $access_token_secret ]); $client = new Twitter([ 'accessToken' => $token, 'consumerKey' => self::consumerKey, 'consumerSecret' => self::consumerSecret ]); $timeLine = $client->api('statuses/home_timeline.json', 'GET'); //得到该用户的feed流也就是动态 var_dump($timeLine); } //得到授权了该应用的所有用户的Feed流动态等 public function actionHomeLineAll(){ $client = new Twitter([ 'consumerKey' => self::consumerKey, 'consumerSecret' => self::consumerSecret ]); $timeLine = $client->api('statuses/home_timeline.json', 'GET'); var_dump($timeLine); } }
至此,你已经大功告成,Twitter还提供了更多的接口,也对一些接口有一定的限制,这就需要你更详细的去研究和使用了。
吐槽一下:dodo在调试的时候遇到的几个大坑,调试这个花了好多周折,弄得周末都加班诚惶诚恐。
第一:是Twitter的文档是英文的,阅读文档请细致仔细。
第二:twitter的接口说明是http请求还包含了头部以及一些签名的信息,加密方式HMAC-SHA1需要自己模拟去实现。
第三:需要curl的相关参数header头等信息设置Authorization等的组合。
第四:回调地址部分域名在Twitter后台设置不成功,提示非法网址。之后我就留空了回调地址。之后走了一个另外的流程生成了一个数字码,call_back只接受参数oob(奇葩了大半天),后来果断放弃。
第五:强烈建议使用Yii2的框架,坚定思路,而不是一下子考虑原生写法,一下子去找其他demo,一下子又组合,劳民伤财。
第六:记得翻墙~~浏览器翻墙和整个电脑翻墙是不一样的。如果你在本地localhost的话。需要整个电脑翻墙。
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的使用示例