Twitter API - "无效或过期令牌"的原因

Ran*_*Ran 25 twitter twitter-oauth

导致令牌过期的可能原因是什么(除了让用户取消授权应用程序)?

我的问题是,我有一个拥有数千名用户的应用程序,所有API通信都运行良好,但对于某些用户我收到invalid or expired token错误,我的初期虽然是他们是取消了对应用程序的身份验证的用户,但我已经联系了一些他们并没有撤销访问权限.

有什么想法可以导致其他问题吗?

My *_*God 15

通过在使用该访问令牌时调用GET帐户/ verify_credentials,随时检查访问令牌的完整性.

它提到并通过研究我了解到:

如果用户明确拒绝其设置中的应用程序或Twitter管理员暂停您的应用程序,则您的访问令牌将无效.如果您的申请被暂停,您的申请页面上会有一条说明已被暂停的说明.

为什么我的twitter oauth访问令牌无效/过期?

查看此帖子:无效/过期访问令牌.

Google群组中有一篇帖子说:

你没有第二次机会,这是设计的.OAuth请求具有唯一的签名; 一旦提交了特定请求,就无法再次提交.如果他们正确地输入了引脚,一切都很顺利,你会得到一个访问令牌.如果他们输入错误的引脚,您将获得401 Unauthorized - 这是预期的.但如果他们再次尝试输入引脚,即使正确的引脚显示为未经授权.

请查看此链接以获取上述参考.

twitter员工针对同一问题提出的一些建议:

我想在这一点上我会建议两件事:1.)转到您的应用程序设置并使用"重置键"选项卡重置您的消费者密钥和密码,然后在应用程序中更新这些值并验证您是否仍然看到相同的行为.2.)尝试在request_token调用中传递oauth_callback.老实说,我不认为这会有所作为,但我想尝试尽可能严谨.

另请查看此讨论说:

您需要使用oauth/access_token调用返回的oauth_token和oauth_token_secret,而不是dev.twitter.com中应用程序设置中的oauth_token和oauth_token_secret.


ank*_*185 6

我遇到了同样的错误,然后我进行了更改(access_token) to (access_token_key),它为我工作。

希望对您有所帮助。


小智 5

除了其他人所做的评论之外,有时当令牌不是问题时,twitter api 会返回“无效令牌”错误。当我构建一个无法正确解析的请求字符串时,我最注意到它。例如,有一次我在传入具有不可 URI 编码符号的 screen_name 时遇到该错误。当我传入这样的空值(光标为空)时,我也得到了它:

https://api.twitter.com/1/followers.json?cursor=&screen_name=whatevah
Run Code Online (Sandbox Code Playgroud)

您能给我们提供返回此错误的调​​用的详细信息吗?


小智 0

也许这对你有帮助。我遇到了同样的问题。

请找到下面的代码片段

$code = $tmhOAuth->user_request(array(
      'method' => 'POST',
     'url' => $tmhOAuth->url('oauth/access_token', ''),
     'params' => array(
            'oauth_verifier' => trim($params['oauth_verifier']),
        )
      ));

   if ($code == 200) {
        $oauth_creds = $tmhOAuth->extract_params($tmhOAuth->response['response']); 
        // echo '<pre>';print_r($oauth_creds);exit;


      $tmhOAuth->reconfigure(array_merge($tmhOAuth->config, array(
         'token'  => $oauth_creds['oauth_token'],
            'secret' => $oauth_creds['oauth_token_secret'],
     )));

  $code = $tmhOAuth->user_request(array(
          'url' => $tmhOAuth->url('1.1/account/verify_credentials') 
   ));


}
Run Code Online (Sandbox Code Playgroud)