【问题标题】:Could not retrieve a valid Token response from Token URL + Twitter API无法从令牌 URL + Twitter API 检索有效的令牌响应
【发布时间】:2012-10-27 04:56:31
【问题描述】:

我在我的 zend 框架应用程序中使用 twitter 进行登录。但是在通过 twitter 进行身份验证后,它显示以下错误:

Message:Could not retrieve a valid Token response from Token URL: /oauth/access_token?oauth_consumer_key=xxxxxxxxxxxxxxx&oauth_nonce=xxxxxxxxxxxxxxxxxxxx&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1352270857&oauth_token=xxxxxxxxxxxxx&oauth_version=1.0
&oauth_verifier=xxxxxxxxxxxxxxxxxxxxx&oauth_signature=wv5gdop77NA9BeZI7ilQcEFsqGH8CeR4%3D Invalid / expired Token

以下是我的代码:

    public function twittercallbackAction() {
            $path = realpath(APPLICATION_PATH . '/../library/');
            set_include_path($path);
            $config = array(
                "callbackUrl" => "http://" . $_SERVER['HTTP_HOST'] . "/register/twittercallback",
                "siteUrl" => "http://twitter.com/oauth",
                "consumerKey" => "xxxxxxxxxxxxxx",
                "consumerSecret" => "xxxxxxxxxxxxxxxxxxxx"
            );

            $consumer = new Zend_Oauth_Consumer($config);
            if (!empty($_GET) && isset($_SESSION['TWITTER_REQUEST_TOKEN'])) {            
                $token = $consumer->getAccessToken($_GET, unserialize($_SESSION['TWITTER_REQUEST_TOKEN']));
                // Now that we have an Access Token, we can discard the Request Token
                // get users timeline            
                // $_SESSION['TWITTER_REQUEST_TOKEN'] = null;
            } else {
                // Mistaken request? Some malfeasant trying something?
                exit('Invalid callback request. Oops. Sorry.');
            }
}

我正在谷歌上搜索这个问题,但没有得到任何解决方案。

我该如何处理这个问题。

谢谢

【问题讨论】:

    标签: php zend-framework twitter twitter-oauth


    【解决方案1】:

    我测试了你的代码,我假设你是从http://framework.zend.com/manual/1.12/en/zend.oauth.introduction.html 得到的,它工作正常。以下是一些需要检查的事项:

    • 您的消费者应用程序密钥/密钥是否有效?
    • 您的服务器是否设置了正确的日期/时间?
    • 生成请求令牌的代码是什么?

    【讨论】:

    • 感谢您的回答。最后我解决了。问题不在发布的代码中。这是API url的问题。看我的回答。
    【解决方案2】:

    最后我自己解决了.... :-)

    问题是 twitter 更新了他们的 api url:

    来自

    http://twitter.com/statuses/user_timeline.json? 
    

    到

    https://api.twitter.com/1/statuses/user_timeline.json?
    

    它得到了修复。

    【讨论】:

    • 感谢您为我指明了正确的方向。我有类似的问题。我改变的是Zend_Oauth_Consumer 配置中的siteUrl 参数。右边是'siteUrl' => 'https://api.twitter.com/oauth'。
    猜你喜欢
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 2015-05-28
    • 2011-09-30
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    相关资源
    最近更新 更多