php - Twitter oauth2/invalidate_token 错误 "Unable to verify your credentials"、 "authenticity_token_error"

标签 php twitter oauth twitter-oauth

我在尝试使用 Twitter oauth2/invalidate_token 时遇到错误。错误为:{"errors":[{"code":99,"message":"无法验证您的凭据","label":"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 的内容是用户的而不是应用程序的。

作为测试,当我用对 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特别讨论了此错误,但在它是一个仅应用程序请求导致错误的上下文中,但这不是一个仅应用程序请求,并且列出的原因似乎不适用。

有什么想法吗?

最佳答案

找到答案了。我混淆了两个概念。 oauth2/invalidate_token 调用用于仅应用程序身份验证情况下的不记名 token ,这现在可以解释为什么仅针对该情况记录错误。我想撤销用户 token ,据我了解,这是不可能的。因此,管理此问题的唯一方法是假装撤销我这边的应用程序,并跟踪它。该应用程序仍将在用户的 Twitter 帐户中进行身份验证。举个例子,试试 Pinterest。您可以通过 Pinterest 打开 Twitter,Pinterest 应用程序将显示在您的 Twitter 帐户中。如果您通过 Pinterest 关闭该应用程序,然后再次查看您的 Twitter 应用程序,它仍然会在那里。换句话说,你没有把它关掉。我将其留在这里,以防它可以帮助其他人不要在这方面浪费时间。似乎很明显我们应该能够撤销应用程序(例如 Facebook 允许这样做),但 Twitter 似乎不能。如果有人对此主题有更多或不同的了解,请发布。

关于php - Twitter oauth2/invalidate_token 错误 "Unable to verify your credentials"、 "authenticity_token_error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33587368/

相关文章:

ruby-on-rails - 什么 Rails OAuth 2 服务器解决方案允许使用相同的 Controller 与 OAuth 和基于表单的身份验证?

java - 为 Shopify 应用程序生成访问 token 时出错

php - 如何获取最后创建的ID

android - Twitter4j API 不会在 android 中按下后退按钮时重定向到应用程序

php - 如何通过 PHP+MySQL 使用 Hash 标签显示来自 twitter 的推文

php - Facebook/Twitter/Google+ 自定义对话框和带有计数器的按钮?

android - 使用 OAuth2 改进异步调用

php - 加入另一个包含标签的表

php - 在没有实际框架的情况下使用 Zend Framework 组件?

php-如果文件已经存在,如何从目录中删除文件?