0

到目前为止,我有这个由 rauth 驱动的命令行 Python 脚本:

import json
from rauth import OAuth1Service

twitter = OAuth1Service(
            name='twitter',
            consumer_key='[REDACTED]',
            consumer_secret='[REDACTED]',
            request_token_url='https://api.twitter.com/oauth/request_token',
            access_token_url='https://api.twitter.com/oauth/access_token',
            authorize_url='https://api.twitter.com/oauth/authorize',
            base_url='https://api.twitter.com/1.1/')

request_token, request_token_secret = twitter.get_request_token()
authorize_url = twitter.get_authorize_url(request_token)

print 'Copy-paste this URL into your browser: ' + authorize_url
twitter_pin = raw_input('Enter PIN: ')

session = twitter.get_auth_session(request_token,
                                   request_token_secret,
                                   method='POST',
                                   data={'oauth_verifier': twitter_pin})

search_results = session.get('search/tweets.json', params={'q':'example'})

print json.dumps(search_results)

rauth 完成所有 OAuth 处理,我得到一个对象作为回报。我尝试打印它,它显示响应 [200](在尖括号中),表示成功。我尝试使用 Python 的 json.dump 打印出内容,我得到:

TypeError: <Response [200]> is not JSON serializable

我可能忽略了一些非常小的东西。这有什么问题?

相关 Twitter 文档 相关 rauth 文档

4

1 回答 1

2

库建立在rauth之上,返回一个专门的对象requestsrequests.Session

返回的对象session.get()是一个requests.Response对象;调用该response.json()方法将 JSON 响应数据作为 Python 结构获取:

print search_results.json()

无需将其转储回 JSON 字符串,直接使用 Python 数据结构。

于 2014-07-04T14:33:49.013 回答