Twitter OAuth:此页面没有请求令牌
Twitter OAuth: There is no request token for this page
我正在使用 Abraham 的 TwitterOAuth
库在我的应用程序中实施 Twitter OAuth。但是,在单击 Login
按钮时,用户有时会被重定向到以下页面:
我说 'sometimes',因为有时 Twitter OAuth 提供商确实会生成请求令牌,用户会被带到 'Grant Permission' 页面。
这是图书馆的问题吗?或者这是 Twitter OAuth 提供商的问题?如果我的代码有问题,那么每次用户尝试使用 his/her 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
,但似乎并没有解决问题。
我认为最有可能的两种情况是:
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 的状态。
我正在使用 Abraham 的 TwitterOAuth
库在我的应用程序中实施 Twitter OAuth。但是,在单击 Login
按钮时,用户有时会被重定向到以下页面:
我说 'sometimes',因为有时 Twitter OAuth 提供商确实会生成请求令牌,用户会被带到 'Grant Permission' 页面。
这是图书馆的问题吗?或者这是 Twitter OAuth 提供商的问题?如果我的代码有问题,那么每次用户尝试使用 his/her 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
,但似乎并没有解决问题。
我认为最有可能的两种情况是:
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 的状态。