【问题标题】:Using Python and OAuth2 with Twitter streaming API将 Python 和 OAuth2 与 Twitter 流 API 一起使用
【发布时间】:2013-06-23 13:48:47
【问题描述】:

Twitter v1 API 现已失效,因此我一直在尝试使用搜索和流式处理 API 来整理主题标签信息。搜索 API 有速率限制,因此如果主题标签上有很多条目,您可能会错过一些。流媒体似乎是要走的路。

这里使用 OAuth2 是我的(匿名)代码:

import oauth2 as oauth
import json

consumer_key = "<consumer key from twitter developer site>"
consumer_secret = "<consumer secret>"
oauth_token = "<access token>"
oauth_token_secret = "<access token secret>"
consumer = oauth.Consumer(key=consumer_key, secret=consumer_secret)
access_token = oauth.Token(key=oauth_token, secret=oauth_token_secret)
client = oauth.Client(consumer, access_token)

terms = json.dumps({'track' : 'twitter'})
stream_endpoint = "https://stream.twitter.com/1.1/statuses/filter.json"
response, data = client.request(stream_endpoint,"POST", body=terms, headers={'Content-Type':'application/json'})

我遇到的问题是这总是返回以下消息:

>>>'No filter parameters found. Expect at least one parameter: follow track locations\r\n'

【问题讨论】:

    标签: python twitter twitter-oauth


    【解决方案1】:

    我认为你的错误是因为在上使用 JSON 数据

    terms = json.dumps({'track' : 'twitter'})
    

    你应该像这样写你的代码

    terms = 'track=twitter'
    

    【讨论】:

    • 你有这个成功的工作吗?我让这段代码运行了 30 分钟,但没有得到响应。
    【解决方案2】:
        USER = request.params.get('username', '00000')
        LIMIT = request.params.get('limit', '50')
        REQUEST_TOKEN_URL = 'https://api.twitter.com/oauth/request_token'
        consumer_key    ='424245wfdsfa4'    
        consumer_secret ='afar234252523adsasd'
    
        if consumer_key is None or consumer_secret is None:
            print 'you need consumer_key & consumer_secret key'
            sys.exit(1)
    
        signature_method_hmac_sha1 = oauth.SignatureMethod_HMAC_SHA1()
        oauth_consumer             = oauth.Consumer(key=consumer_key, secret=consumer_secret)
        oauth_client               = oauth.Client(oauth_consumer)
    
    
        response, content = oauth_client.request(REQUEST_TOKEN_URL, 'POST')
    
        if response['status'] == '200':
            request_token = dict(parse_qsl(content))
        else:
            print 'Invalid response from Twitter requesting  token.........: %s' % response['status']
    
        endpoint = 'https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=' + USER + '&count=' + LIMIT
        response, content = oauth_client.request(endpoint, 'GET')
        url = response['content-location']
        f = urllib2.urlopen(url)
        response = f.read()
        return simplejson.loads(response)
    

    【讨论】:

      猜你喜欢
      • 2021-06-18
      • 2013-04-14
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      • 2015-08-16
      相关资源
      最近更新 更多