【发布时间】:2015-11-08 11:54:15
【问题描述】:
我在尝试使用 Twitter oauth2/invalidate_token 时遇到错误。错误是:{"errors":[{"code":99,"message":"Unable to verify your credentials","label":"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 的内容是用户的而不是应用的。
作为测试,当我用对 statuses/user_timeline.json 的 GET 替换对 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 特别谈到了这个错误,但是在它是一个导致错误的仅限应用程序的请求的上下文中,但这不是一个仅限应用程序的请求,并且列出的原因似乎并不适用.
有什么想法吗?
【问题讨论】:
标签: php twitter oauth twitter-oauth