【问题标题】:Twitter OAuth: There is no request token for this pageTwitter OAuth:此页面没有请求令牌
【发布时间】:2015-11-17 17:03:12
【问题描述】:

我正在使用 Abraham 的 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 KeyConsumer Secret,但这似乎并没有解决问题。

【问题讨论】:

    标签: php wordpress twitter oauth oauth-2.0


    【解决方案1】:

    在我看来最有可能的两种情况是:

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

    【讨论】:

    • 获取请求令牌时确实出错了。错误处理解决了我的问题。非常感谢,亚伯拉罕!一个简单的问题:为什么只是准备处理错误会阻止错误完全触发?其他的一切都和我原来的代码完全一样,但是为什么错误处理完全阻止了错误的发生呢?
    • 我今天早上晚些时候再次尝试处理我的应用程序,但在生成请求令牌时仍然遇到同样的问题,尽管现在它被代码中的错误处理机制捕获。然而,核心问题仍然存在。
    猜你喜欢
    • 1970-01-01
    • 2021-12-08
    • 2012-06-22
    • 2011-09-05
    • 2017-01-10
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多