LoginSignup
17
14

More than 5 years have passed since last update.

rauthでTwitterAPIにアクセスするのが簡単すぎて、僕にも彼女が…

Last updated at Posted at 2013-11-13

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())
17
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
14