到目前为止,我有这个基于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处理,然后我得到一个对象作为回报。我尝试打印它,它说Response [200](在尖括号中),表示成功。我尝试使用Python的json.dump打印出内容,然后得到:
TypeError: <Response [200]> is not JSON serializable
我可能会忽略一些非常小的东西。这有什么问题?
答案 0 :(得分:2)
rauth
库建立在requests
library之上,返回专门的requests.Session
object。
session.get()
返回的对象是requests.Response
object;调用response.json()
method将JSON响应数据作为Python结构获取:
print search_results.json()
无需将其转储回JSON字符串,直接使用Python数据结构。