Twitter OAuth:此页面没有请求令牌

时间:2015-08-24 10:00:37

标签: php wordpress twitter oauth oauth-2.0

我正在使用亚伯拉罕的TwitterOAuth库在我的应用程序中实现Twitter OAuth。但是,在单击Login按钮时,用户有时会重定向到以下页面:

enter image description here

我说'有时',因为有时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 KeyConsumer Secret,但这似乎没有解决问题。

1 个答案:

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