Twitter API
から学ぶ
OAuth
uji52
uji52
自己紹介
• uji52
• My favorite
• Twitter Client
• TweetDeck(for mac)
• ujitter(ruby script)
• 好きなOAuth2のGrant Type
• Code Grant
• Resource Owner Password
Credential Grant
2
uji52
6,7年前にAPI使って
Twitter Client作ったなー
3
uji52
ただのBasic認証やったのが
OAuthになった頃に触ったな
4
uji525
Twitter Developers
何やら見てくれがガッツリ変わってる…
uji526
REST API
なるほど、RESTの口を持ってるわけか
uji52
REST API
• Public API
• 普通にTwitter使うときに使うようなAPI
• Media API
• 画像や動画をアップロードするためのAPI
• Collections API
• ユーザに紐付かないようなリクエストができるAPI
• TON API(Twitter Object Nest)
• Twitterへメディアや様々なアセットをアップロードできるAPIらしい
• Curator API
• ストリームを放送局に提供する非公開APIらしい
7
uji52
RESTで叩いてるんなら
Authorizationヘッダでも
覗いてみるかな
8
uji529
Twitter API の OAuth
uji52
Oh… OAuth1.0a…
10
uji52
そもそもOAuthって?って人に
• セキュアにAPIを利用
• 特定の処理だけサードパーティーに認可
• でもID/PWを知られたくない
• でも簡単に利用したい
• 認可情報
• ユーザによる認可(ID/PW or Access Token/Secret)
• クライアントによる認可(Consumer Key/Secret)
• 標準仕様だし乗っちゃいなよ
11
uji5212
5種類のOAuth
uji52
5種類のOAuth
• Application-Only Authentication
• アプリケーションの情報で認可トークンを作成
• 3-Legged OAuth
• ユーザに変わって読み込み・投稿等
• PIN-Based OAuth
• ブラウザにアクセスできない端末や組み込みアプリ
• xAuth
• Basicっぽいなにがし
• OAuth Echo
• 未調査
13
調べてたら後半飽きてきた
uji52
Application-Only Authentication
• 利用する認証情報
• Consumer Key/Secret
• ユーザの情報は使わない
• OAuth2のClient Credential Grantをベース
• 使えるAPI
• ユーザのタイムラインを取得等
• 認証してなくても使えるようなAPI
14
uji5215
Application-Only Authentication
https://dev.twitter.com/oauth/application-only
単純にクライアント情報でBasic認証
uji52
3-Legged OAuth
• 利用する認証情報
• ユーザがTwitterに対してID/PW認証
• 認証に使うエンドポイント
• 3-LeggedはAuthorizationエンドポイント
(通常はAuthenticateエンドポイントらしい)
• 特徴
• 認証済みの場合も常にトークン要求画面へ
16
uji5217
Application-Only Authentication
https://dev.twitter.com/oauth/3-legged
uji52
PIN-Based OAuth
• 利用する認証情報
• 認証済みのユーザに提示されるPIN
• 認証に使うエンドポイント
• Request Tokenエンドポイント
18
uji5219
PIN-Based OAuth
https://dev.twitter.com/oauth/pin-based
uji52
xAuth
• 利用する認証情報
• ユーザのID/PW
• 特徴
• ID/PWをOAuthなトークンに変換
• クライアントは取得したID/PWはすぐに破棄すべし
• 注意
• 俺ならxAuthなクライアントは信じない
• 基本的には使わせないようにしてる
20
uji52
OAuth Echo
• 利用する認証情報
• Consumer Key/Secret
• 特徴
• サードパーティー製のアプリとの連携
• Twitter Client -> twipic的な
• 必要な情報をAuthorizationヘッダに付加
21
uji52
まとめ
• API保護にもいろいろ種類が
• 今回触れた話以外にも考えるところ有
• OAuthなフロー考えるときはユースケ
ース第一
• OAuth1.0a… 思ったより深い
• マナバネバ…
22
uji52
以上
23

Twitter API で学ぶ OAuth