我正在使用亚伯拉罕的TwitterOAuth
库在我的应用程序中实现Twitter OAuth。但是,在单击Login
按钮时,用户有时会重定向到以下页面:
我说'有时',因为有时Twitter OAuth提供商会生成请求令牌,并且用户将被带到'授予权限'页面。
这是图书馆问题吗?或者这是Twitter OAuth提供商的问题?如果我的代码出现问题,那么每次用户尝试使用他/她的Twitter帐户登录时都会显示此页面,而不是随机尝试。
以下是点击Login
按钮后用户重定向到的模板代码:
<?php
/*
*Template Name: OAuth
*/
?>
<pre>
<?php
session_start();
require "twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
define('CONSUMER_KEY', "XXXXXXXXXXXXXXX");
define('CONSUMER_SECRET', "XXXXXXXXXXXXXXXXXXXX");
define('OAUTH_CALLBACK', "http://localhost/wordpress/index.php/callback/");
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
$request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => OAUTH_CALLBACK));
$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];
$url = $connection->url('oauth/authorize', array('oauth_token' => $request_token['oauth_token']));
header('Location: '.$url);
?>
</pre>
PS:我也尝试重新生成Consumer Key
和Consumer Secret
,但这似乎没有解决问题。
答案 0 :(得分:2)
我认为最有可能出现的两种情况是:
1)获取请求令牌时出错。尝试添加一些错误处理。
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
$request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => OAUTH_CALLBACK));
if ($connection->getLastHttpCode() == 200) {
$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];
$url = $connection->url('oauth/authorize', array('oauth_token' => $request_token['oauth_token']));
header('Location: '.$url);
} else {
var_dump($request_token);
exit('Error getting request_token');
}
2)Twitter有一个错误,因为某些原因它没有识别request_token。
调试的下一步是找出导致错误的$ request_token的状态。