Python Twitter API 401按IP[y]笔记本中的WOE ID调用趋势数据时出错
我正在浏览《挖掘社交网络第二版》第一章中的步骤,并在调用Yahoo GeoPlanet的WOE ID系统检索趋势时不断收到一个错误。OAuth信息已用“*”编辑。没什么帮助 作为旁注,我最后不得不使用Python Twitter API 401按IP[y]笔记本中的WOE ID调用趋势数据时出错,python,twitter,oauth,ipython-notebook,anaconda,Python,Twitter,Oauth,Ipython Notebook,Anaconda,我正在浏览《挖掘社交网络第二版》第一章中的步骤,并在调用Yahoo GeoPlanet的WOE ID系统检索趋势时不断收到一个错误。OAuth信息已用“*”编辑。没什么帮助 作为旁注,我最后不得不使用 from twitter import Twitter 而不是GitHub上的代码。不知道为什么,但导入Twitter(和导入Twitter)对我不起作用。已通过pip安装,但仍必须更改库调用 初始身份验证似乎工作正常: from twitter import Twitter consumer_
from twitter import Twitter
而不是GitHub上的代码。不知道为什么,但导入Twitter(和导入Twitter)对我不起作用。已通过pip安装,但仍必须更改库调用
初始身份验证似乎工作正常:
from twitter import Twitter
consumer_key = '*****'
consumer_secret = '*****'
oauth_token = '*****'
oauth_secret = '*****'
auth = twitter.oauth.OAuth(oauth_token, oauth_secret, consumer_key, consumer_secret)
twitter_api = twitter.Twitter(auth=auth)
print twitter_api
<twitter.api.Twitter object at 0x106******>
从twitter导入twitter
消费者密钥='*****'
消费者秘密='*****'
oauth_令牌='*****'
oauth_secret='*****'
auth=twitter.oauth.oauth(oauth_令牌、oauth_密钥、消费者_密钥、消费者_密钥)
twitter\u api=twitter.twitter(auth=auth)
打印twitter\u api
但调用API的尝试失败:
WORLD_WOE_ID = 1
US_WOE_ID = 23424977
world_trends = twitter_api.trends.place(_id=WORLD_WOE_ID)
us_trends = twitter_api.trends.place(_id=US_WOE_ID)
print world_trends
print
print us_trends
TwitterHTTPError Traceback (most recent call last)
<ipython-input-29-e2835459a5aa> in <module>()
10 # to the URL itself as a special case keyword argument.
11
---> 12 world_trends = twitter_api.Twitter.trends.place(_id=WORLD_WOE_ID)
13 us_trends = twitter_api.Twitter.trends.place(_id=US_WOE_ID)
14
/Users/User/anaconda/lib/python2.7/site-packages/twitter/api.pyc in __call__(self, **kwargs)
243
244 req = urllib_request.Request(uriBase, body, headers)
--> 245 return self._handle_response(req, uri, arg_data, _timeout)
246
247 def _handle_response(self, req, uri, arg_data, _timeout=None):
/Users/User/anaconda/lib/python2.7/site-packages/twitter/api.pyc in _handle_response(self, req, uri, arg_data, _timeout)
274 return []
275 else:
--> 276 raise TwitterHTTPError(e, uri, self.format, arg_data)
277
278
TwitterHTTPError: Twitter sent status 401 for URL: 1.1/Twitter/trends/place.json using parameters:
(id=1&oauth_consumer_key=*****&oauth_nonce=*****&oauth_signature_method=HMAC-SHA1&oauth_timestamp=*****&oauth_token=*****&oauth_version=1.0&oauth_signature=*****)
details:{"errors":[{"message":"Could not authenticate you","code":32}]}
WORLD\u wood\u ID=1
美国灾难ID=23424977
world\u trends=twitter\u api.trends.place(\u id=world\u WOE\u id)
美国趋势=推特api.trends.place(\u id=us\u WOE\u id)
印刷世界潮流
打印
打印美国流行趋势
TwitterHTTPError回溯(最近一次调用上次)
在()
10#将URL本身作为特例关键字参数。
11
--->12 world\u trends=twitter\u api.twitter.trends.place(\u id=world\u wore\u id)
13美国趋势=推特api.twitter.trends.place(\u id=us\u WOE\u id)
14
/Users/User/anaconda/lib/python2.7/site-packages/twitter/api.pyc in___调用(self,**kwargs)
243
244 req=urllib_request.request(uriBase、body、headers)
-->245返回自身句柄响应(请求、uri、参数数据、超时)
246
247定义句柄响应(self、req、uri、arg数据,_timeout=None):
/响应中的Users/User/anaconda/lib/python2.7/site-packages/twitter/api.pyc(self、req、uri、arg\u数据、\u超时)
274返回[]
275其他:
-->276 raise TwitterHTTPError(e、uri、self.format、arg_数据)
277
278
TwitterHTTPError:Twitter使用以下参数发送URL:1.1/Twitter/trends/place.json的状态401:
(id=1&oauth_使用者密钥=******&oauth_当前=******&oauth_签名方法=HMAC-SHA1&oauth_时间戳=******&oauth_令牌=******&oauth_版本=1.0&oauth_签名=****)
详细信息:{“错误”:[{“消息”:“无法验证您的身份”,“代码”:32}]}
为什么我能够成功地进行身份验证,但无法拨打电话?实例化Twitter对象不会对您进行身份验证;它只存储凭据,直到您实际尝试使用它们进行API调用为止。在收到错误之前,不会尝试身份验证
仔细检查您的OAuth凭据是否正确,并确保您的系统日期和时间设置正确,因为如果时间过多,可能会导致握手问题。您可以通过在“您的访问令牌”标题下的应用程序API密钥页上登录,为您的帐户重新生成OAuth令牌。用户错误。典型的我没有按照书中的说明去做,而是有点走火入魔,手动安装IPython笔记本,试着自己运行。如果您正在阅读本书,请确保您非常仔细地遵循以下(以及所有)步骤:
http://localhost:8888
GitHub存储库:
Vimeo通道(非常有用):
希望这对其他人有帮助。谢谢。很高兴了解实例化。我不知道。有趣的是,当我重新生成密钥并替换我拥有的密钥时,它突然不喜欢开始时从twitter导入的twitter位。最后将其更改为导入twitter,并且在实例化部分工作良好。系统运行时间也很好。然而,我仍然获得401身份。