2011-03-29 34 views
1

twitter_login的Twitter的OAuth - 無效/過期的標記

 $twitteroauth = new TwitterOAuth($this->__twitterKey, $this->__twitterSecret); 

     $request_token = $twitteroauth->getRequestToken(Router::url(array('action' => 'twitter', 'authorize'), true)); 
     $this->Session->write('Twitter', $request_token); 

     if($twitteroauth->http_code==200){ 
      // Let's generate the URL and redirect 
      $url = $twitteroauth->getAuthorizeURL($request_token['oauth_token']); 
      header('Location: '. $url); 
     } else { 
      $this->Session->setFlash('Something went wrong'); 
     } 

twitter_callback

$data['oauth_verifier'] = $_GET['oauth_verifier']; 
    $data['oauth_token'] = $this->Session->read('Twitter.oauth_token'); 
    $data['oauth_token_secret'] = $this->Session->read('Twitter.oauth_token_secret'); 

    $twitteroauth = new TwitterOAuth($this->__twitterKey, $this->__twitterSecret, $data['oauth_token'], $data['oauth_token_secret']); 

    $access_token = $twitteroauth->getAccessToken($data['oauth_verifier']); 

當我做了的var_dump

我得到以下

Array 
(
    [ "1.0" encoding="UTF-8"?> 

    /oauth/access_token?oauth_consumer_key=Z2R8QqJYCthif67Qba4vzA 
    [amp;oauth_nonce] => 78576d8eaaabb422fdbd3097e385adcc 
    [amp;oauth_signature] => T23hCeJ5PM2rdYvdZ0mvoHzOfLk= 
    [amp;oauth_signature_method] => HMAC-SHA1 
    [amp;oauth_timestamp] => 1301392825 
    [amp;oauth_token] => JKlpOBGaENFzuXbs4bSzVZCTWnelKX5WeJ1EA1MLfB0 
    [amp;oauth_verifier] => ifPBR18Pw2iTs74GAqyFlLXbvQAoOgG3AjWpPxXV2E 
    [amp;oauth_version] => 1.0 
    Invalid/expired Token 


) 

回答

3

之前嘗試ksorting $ twitteroauth =新Twi tterOAuth(...) 大多數情況下,OAuth問題是由於協議的要求而發生的。

$data['oauth_token_secret'] = $this->Session->read('Twitter.oauth_token_secret'); 

ksort($data); 

$twitteroauth = new TwitterOAuth($this->__twitterKey, $this->__twitterSecret, 

下面是說明參數的正常化(分選) http://oauth.net/core/1.0/#anchor14