2012-11-07 116 views
3

我正在使用twitter在我的zend框架應用程序中進行登錄。但是,從Twitter的認證後,顯示以下錯誤:無法從令牌URL + Twitter獲取有效的令牌響應API

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.'); 
      } 
} 

我正在尋找在谷歌這個問題,但沒有得到任何解決方案。

我該如何處理這個問題。

感謝

回答

3

最後我解決了它自己.... :-)

問題是Twitter的更新了自己的API網址:

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

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

並得到修復。

+0

感謝你讓我朝着正確的方向前進。我有類似的問題。我改變的是'Zend_Oauth_Consumer'配置中的'siteUrl'參數。正確的是''siteUrl'=>'https:// api.twitter.com/oauth''。 –

3

我測試你的代碼,我假設你從http://framework.zend.com/manual/1.12/en/zend.oauth.introduction.html找來的,它工作正常。這裏有幾件事要檢查:

  • 您的消費者應用程序密鑰/祕密是否有效?
  • 您的服務器是否設置了正確的日期/時間?
  • 什麼是您的代碼來生成您的請求令牌?
+0

感謝您的回答。最後我解決了它。問題不在發佈代碼中。這是API網址的問題。看到我的答案。 – Sky

+0

@Jonathan Amend:謝謝你的工作 – Sky