1

我正在尝试使用 twitterpackage和以下代码从 Twitter 上抓取一些推文:

>>> CONSUMER_KEY = 'xxxxxxxxxxxxxxxxxxxxxxx'
>>> CONSUMER_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxx'
>>> OAUTH_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxx'
>>> OAUTH_TOKEN_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxx'
>>> auth = twitter.oauth.OAuth(OAUTH_TOKEN_SECRET, OAUTH_TOKEN, CONSUMER_SECRET, CONSUMER_KEY)
>>> twitter_api = twitter.Twitter(auth=auth)
>>> print twitter_api
<twitter.api.Twitter object at 0x1085a7550>
>>> q = '#xxxxxxx'
>>> count = 100
>>> search_results = twitter_api.search.tweets(q=q, count=count)

在上面的最后一行之后,我得到了一堆行,最后一行详细说明了错误状态:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/twitter/api.py", line 204, in __call__
    return self._handle_response(req, uri, arg_data, _timeout)
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/twitter/api.py", line 235, in _handle_response
    raise TwitterHTTPError(e, uri, self.format, arg_data)
twitter.api.TwitterHTTPError: Twitter sent status 401 for URL: 1.1/search/tweets.json using parameters: (count=100&oauth_consumer_key=XXXXXXXXX&oauth_nonce=18110930768465666531&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1383724916&oauth_token=XXXXXXXXX&oauth_version=1.0&q=%23IdolsSA&oauth_signature=JGsmTXBIAHsX6Tq6bKjLPww%2B9SE%3D)
details: {"errors":[{"message":"Invalid or expired token","code":89}]}

我尝试生成新的消费者和 oauth 代码并输入它们,但我仍然得到同样的错误。我正在考虑尝试将代码放在新的 virtualenv 中。

我可能做错了什么?

谢谢

4

2 回答 2

1

我认为您切换了默认参数顺序。文档说:

t = Twitter(
        auth=OAuth(OAUTH_TOKEN, OAUTH_SECRET,
                   CONSUMER_KEY, CONSUMER_SECRET))

尝试更改参数的顺序或使用关键字参数。

于 2013-11-06T09:25:38.760 回答
0

OAUTH_TOKEN的无效或已过期。

尝试:

  1. 尝试登录https://dev.twitter.com/
  2. 检查您的应用程序(在您的头像右侧的下拉列表中)
  3. 在详细信息选项卡中,向下滚动并单击recreate my access token

之后,使用新令牌重新运行您的应用程序。希望这可以帮助!

于 2013-11-06T08:44:57.267 回答