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 KeyConsumer 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 的状态。