嘗試使用Twitter oauth2/invalidate_token時出現錯誤。錯誤是:{「errors」:[{「code」:99,「message」:「無法驗證您的憑據」,「label」:「authenticity_token_error」}]}Twitter oauth2/invalidate_token錯誤「無法驗證您的憑證」,「authenticity_token_error」
我正在使用TwitterAPIExchange。 PHP包裝,你可以找到here和here。該框架是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關於此錯誤的特別會談,但它是導致錯誤的唯一的應用程序請求的範圍內,但這不是僅限應用程序的請求,並且列出的原因似乎不適用。
任何想法?
因此不記名令牌和單用戶令牌不同。並按照[此處](https://dev.twitter.com/oauth/reference/post/oauth2/invalidate/token)中的說明,使用'POST oauth2/invalidate_token'端點來撤銷不記名令牌。與此端點相關的錯誤在底部的**常見錯誤案例**下記錄爲[此處](https://dev.twitter.com/oauth/application-only)。 –