【问题标题】:Twitter Streaming API unauthorizedTwitter Streaming API 未经授权
【发布时间】:2013-08-22 11:08:00
【问题描述】:

我在从 twitter 流 api 获取推文时遇到问题:https://stream.twitter.com/1.1/statuses/filter.json

我总是收到错误 401,未经授权。服务器时间正确。

我已经签署了请求。 这是我的代码(python):

    token = oauth.Token(key = TWITTER_ACCESS_TOKEN, secret = TWITTER_ACCESS_TOKEN_SECRET)
    consumer = oauth.Consumer(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET)

    params = {'oauth_version': '1.0', 'oauth_nonce': oauth.generate_nonce(), 'oauth_timestamp': int(time.time())}
    req = oauth.Request(method='POST', parameters=params, url='https://stream.twitter.com/1.1/statuses/filter.json?track=twitter')
    req.sign_request(oauth.SignatureMethod_HMAC_SHA1(), consumer, token)

    urllib2.urlopen(req.to_url())

我做错了什么?

请帮帮我。

提前致谢, 萨布丽娜

【问题讨论】:

    标签: python twitter oauth http-status-code-401 unauthorized


    【解决方案1】:

    您提供的凭据不正确,或者存在导致计算出不正确签名的错误。在这里将日志级别设置为 DEBUG 可能会有所帮助。

    使用来自twitter application page 的凭据,我在获取流时没有问题

    from requests_oauthlib import OAuth1Session
    
    key = "<your client key>"
    secret = "<your client secret>"
    token = "<your token here>"
    token_secret = "<token secret>"
    
    twitter = OAuth1Session(key, client_secret=secret,
                            resource_owner_key=token,
                            resource_owner_secret=token_secret)
    
    r = twitter.get(
        'https://stream.twitter.com/1.1/statuses/filter.json?track=twitter',
        stream=True
    )
    
    for line in r.iter_lines():
        if line:
            print line
    

    使用requests-oauthlib。如果上述方法对您有用,那么您的凭据是正确的,问题可能出在您的 oauth 库上。

    【讨论】:

      猜你喜欢
      • 2013-04-02
      • 2014-01-02
      • 2016-12-24
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 2012-06-24
      • 2012-04-08
      相关资源
      最近更新 更多