アプリ開発者自身のアクセストークンは、Twitterのアプリ管理画面の『Keys and Access Tokens』から簡単に発行できます。
が、自分のアカウントを介して何かするアプリならそれでいいけど、例えば開発者アカで作ったbotアプリをbot用の別アカウントに認証させようと思ったら、面倒です。なので、認証してアクセストークンを表示するだけのサンプルを書いてみました。
このページのサンプルの挙動は以下の通りです。
/oauth/request_token
を叩いてリクエストトークン取得し、Twitter認証ページへのリンクを表示する。
- リンク先でTwitterの認証を完了すると、コールバックURLとして設定済み (※後述・要設定) のこのスクリプトに戻ってくる。
- 戻ってくる時に連れてきたGETパラメータ
oauth_verifier
を使って /oauth/access_token
を叩き、アクセストークンを取得して表示する。
それにしても、APIを叩くときに作る署名がとにかく面倒くさいです。ちょっと間違えるとすぐ {"code":32,"message":"Could not authenticate you."}
エラーになるし。
動かし方
最初に準備が必要です。
- ↑のソースコードをローカルサーバー上に置く。ここではファイル名
auth.php
とし、ローカルサーバー上のURLは http://localhost/auth.php
とする。
- アプリ管理画面の『Keys and Access Tokens』で『Consumer Key』『Consumer Secret』を確認し、ソースコード先頭の定数
CONSUMER_KEY
CONSUMER_SECRET
にそれぞれ設定する。
- アプリ管理画面の『Settings』の『Callback URLs』に
http://localhost/auth.php
を設定する。
『Callback URLs』は、Twitterに飛ばされて認証した後に戻されるページのURL (コールバックURL) です。設定画面下部の『Update Settings』ボタンを押して反映するのを忘れないように。アクセストークンをメモった後はこの設定を消して大丈夫です。
準備を行ったら、以下の通りに動かします。
- Cookieが有効なブラウザで、
http://localhost/auth.php
にアクセスする。Twitterの認証画面のURLリンクが表示されるのでクリック。
- Twitterの認証画面に飛ぶので、アクセストークンが欲しいアカウントでログインして認証する。
- 認証完了後、元の画面に戻ってくる。アクセストークンが表示されていれば成功。
成功すると、↓こんな感じの画面になります。