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

