Twitter API返回401(未授权),无效或过期令牌

时间:2015-12-06 20:13:51

标签: python python-3.x authentication twitter twython

我使用以下代码发布推文。这是一个非常标准的身份验证过程,但由于某种原因我无法进行身份验证。我得到的错误是Twitter API returned a 401 (Unauthorized), Invalid or expired token.

from twython import Twython, TwythonError
import requests

APP_KEY = 'rpOzpgp2FZNJqsq0' #fake key
APP_SECRET = 'FKBJWXOJwXTblhi1xBl4PtKgPemNFvumH' #fake secret

twitter = Twython(APP_KEY, APP_SECRET)
auth = twitter.get_authentication_tokens()

OAUTH_TOKEN = auth['oauth_token']
OAUTH_TOKEN_SECRET = auth['oauth_token_secret']

twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

oauth_verifier_url = auth['auth_url']
oauth_verifier = requests.get(oauth_verifier_url)

# Getting the FINAL authentication tokens
final_step = twitter.get_authorized_tokens(oauth_verifier)

OAUTH_TOKEN = final_step['oauth_token']
OAUTH_TOKEN_SECRET = auth['oauth_token_secret']

twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

twitter.update_status(status='Yo')

以下是完整的错误消息:

Traceback (most recent call last):
  File "test.py", line 20, in <module>
    final_step = twitter.get_authorized_tokens(oauth_verifier)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/twython/api.py", line 380, in get_authorized_tokens
    ken'), error_code=response.status_code)
twython.exceptions.TwythonError: Twitter API returned a 401 (Unauthorized), Invalid / expired To             ken

为什么我会收到此错误,我该怎么做才能修复它?

我尝试过多次重新生成我的密钥。我甚至删除了我的应用程序并多次创建新应用程序,但我仍然遇到此错误。

在“应用程序设置”下,我的访问级别设置为读取和写入:

Screenshot of app page

我不在防火墙后面。

我已经阅读了有关此站点上的Twython身份验证的其他解决方案,但他们似乎都提供了上述代码作为解决方案,但这本身并不适用于我。

3 个答案:

答案 0 :(得分:0)

我面临着同样的问题,但是在重新生成密钥之后,问题就解决了。

答案 1 :(得分:0)

⏱⛔⏱费率限制

似乎您经常使用Twitter API。出于安全原因,Twitter限制了从任意应用程序使用其Twitter API的速率。 Twitter在their post中说明了其Twitter API速率限制的工作方式。您可以在该特定应用的特定授权密钥集中,在 15分钟内最多进行 15个GET请求。 15分钟后,您可以自由发出接下来的15个请求。

答案 2 :(得分:0)

你不仅需要发送四个参数 2

Objtwython = Twython(APP_KEY,APP_SECRET,ACCESS_TOKEN,ACCESS_TOKEN_SECRET)

最后一个与您获得其他人的方式相同,直接从 Twitter 获得。