2015-11-07 146 views
2

嘗試使用Twitter oauth2/invalidate_token時出現錯誤。錯誤是:{「errors」:[{「code」:99,「message」:「無法驗證您的憑據」,「label」:「authenticity_token_error」}]}Twitter oauth2/invalidate_token錯誤「無法驗證您的憑證」,「authenticity_token_error」

我正在使用TwitterAPIExchange。 PHP包裝,你可以找到herehere。該框架是Codeigniter 3.0,這個代碼位於AJAX調用的方法中(但我不認爲這兩者之一)。

這裏是我的代碼:

$settings = array(
    'oauth_access_token' => $this->session->userdata('oauth_token'), 
    'oauth_access_token_secret' => $this->session->userdata('oauth_token_secret'), 
    'consumer_key' => TWITTER_CONSUMER_KEY, 
    'consumer_secret' => TWITTER_CONSUMER_SECRET); 

$twitter = new TwitterAPIExchange($settings); 
$url = 'https://api.twitter.com/oauth2/invalidate_token'; 
$requestMethod = 'POST'; 
$postfields = array('access_token' => $this->session->userdata('oauth_token')); 
$response_str = $twitter->buildOauth($url, $requestMethod) 
       ->setPostfields($postfields) 
       ->performRequest(); 
$response_arr = []; 
parse_str($response_str, $response_arr); 

的$ response_str的內容是錯誤。 oauth_token和oauth_token_secret的內容是用戶不是應用程序的。

作爲一個測試,當我使用GET狀態/ user_timeline.json替換對oauth2/invalidate_token的調用時,它工作正常。所以看起來設置是正確的。如果我更換上面的相關線路,獨自離開的設置,這工作得很好:

$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json'; 
$getfield = '?user_id=' . $uid; 
$requestMethod = 'GET'; 
$twitter = new TwitterAPIExchange($settings); 
echo $twitter->setGetfield($getfield) 
    ->buildOauth($url, $requestMethod) 
    ->performRequest(); 

This page in the docs關於此錯誤的特別會談,但它是導致錯誤的唯一的應用程序請求的範圍內,但這不是僅限應用程序的請求,並且列出的原因似乎不適用。

任何想法?

回答

1

找到了答案。我混淆了兩個概念。 oauth2/invalidate_token調用用於僅應用程序認證情況下的持票人令牌,現在爲什麼只爲該情況記錄錯誤纔有意義。我想撤消一個用戶令牌,而這正是我學習的東西,這是不可能的。所以,管理這個的唯一方法就是假裝在我身邊撤銷應用程序,並跟蹤它。該應用程序仍將在用戶的Twitter帳戶中進行驗證。對於這個例子,嘗試Pinterest。您可以通過Pinterest啓用Twitter,Pinterest應用會顯示在您的Twitter帳戶中。如果您通過Pinterest關閉應用程序,並再次查看您的Twitter應用程序,它仍然會在那裏。換句話說,你沒有關掉它。如果它幫助別人不浪費時間,我會離開這裏。似乎很明顯,我們應該能夠撤銷一個應用程序(例如Facebook允許這樣做),但似乎你不能用Twitter。如果有人對此有更多或不同的知識,請發佈。

+0

因此不記名令牌和單用戶令牌不同。並按照[此處](https://dev.twitter.com/oauth/reference/post/oauth2/invalidate/token)中的說明,使用'POST oauth2/invalidate_token'端點來撤銷不記名令牌。與此端點相關的錯誤在底部的**常見錯誤案例**下記錄爲[此處](https://dev.twitter.com/oauth/application-only)。 –

相關問題