TwitterAPIにアクセスする必要がでたため、試しに自前で実装してみたところ、まあ…なんというか…面倒だった。
で、ライブラリを探したところ、rauthというライブラリが見つかったので試してみた。
OAuthライブラリ(not Twitterライブラリ)なので、Twitter以外のAPIでもOAuth認証であれば使える。
また、Requestsに依存しており、HTTPリクエスト部のコードが綺麗に書けるのもいい感じ。
自分のタイムラインに'rauth'と呟くサンプルは以下。「ね、簡単でしょう?」
rauth_sample
import rauth
# access_token/access_token_secretを取得している前提
session = rauth.OAuth1Session(
"consumer_key",
"consumer_secret",
"access_token",
"access_token_secret")
# baseURLについてはsessionにセットする方法があるが省略
session.post(
'https://api.twitter.com/1.1/statuses/update.json',
data={'status': 'rauth'})
上記のサンプルでは、事前にaccess_token/access_token_secretを取得している前提だが、READMEを見る限り、取得するのもそれほど難しくなさそう。これもそのうち試してみよう。
ちなみに彼女はできなかった。
追記
OAuth1ServiceをOAuth1SessionにセットすることでAPIのbaseURLは省略可能。
rauth_sample_set_service
twitter = rauth.OAuth1Service(
name='twitter',
consumer_key='consumer_key',
consumer_secret='consumer_secret',
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/')
session = rauth.OAuth1Session(
consumer_key='consumer_key',
consumer_secret='consumer_secret',
access_token='access_token',
access_token_secret='access_token_secret',
service=twitter)
# ServiceにセットしたbaseURLは省略可能
res = session.get(
url='statuses/home_timeline.json',
params={'count': 10})
print(res.json())