TwitterAPI

【Twitter】アクセストークン取得までの流れ

今更ながら、Twitter APIのトークン周りについて

特にアクセストークン取得までの流れがちょっと複雑なので、メモしました。


Twitterトークンについて

以外にもTwitterトークンについての記事が少ないので、まずここからお話します。


トークンの種類

トークンの種類は大きく2種類あります。APIキーとアクセストークンです。

それぞれシークレットキー(またはシークレットトークン)を持っています。

基本的にAPI keyAPI key secretまたはAccess TokenAccess token secretはペアで扱うので、まとめてAPIキー、アクセストークンといったりします。

トークンの種類
説明

Consumer API key
API識別キー

Consumer API key secret
API識別シークレットキー

Access token
Twitterアカウントに対するアクセストークン

Access token secret
Twitterアカウントに対するアクセストークンシークレット

Consumer API keyは昔Consumer tokenと呼ばれていました。APIを識別するためのキーなので、改名して正解だと思います。

※注意※

Twitter4JではConsumer tokenの名残がクラス名や関数名に残っています

混乱しないように気をつけましょう。


アクセストークンの取得

アクセストークンはTwitterクライアントのIDとパスワードみたいなものですから、流出しては大変です。

そのためアクセストークンを入手するためには、いくつかの手順を踏む必要があります。


連携リクエスト

API連携をアプリケーションサーバにリクエストしてから、PINコードがTwitterサーバから帰ってくるまでの図です(簡単にするためにかなり端折っています)。

get-accesstoken1.png

ほとんど書いてあるとおりですが、一応説明を

最初、クライアントはアプリケーションサーバに連携リクエストを送信します。

連携リクエストを受けたアプリケーションサーバはTwitterに連携リクエスト送信し、リクエストトークンとauthorizantion URLを取得します。autorizantion URLはこのとき限りの一時的なURLです。

クライアントはauthorization URLにアクセスし、Twitterにログインした状態で連携ボタンを押すことでPINコードが得られます。


リクエストトークン + PINコード = アクセストークン

前の図の続きです。PINコード取得からアクセストークン取得までの流れになります。

get-accesstoken1.png

クライアントは得られたPINコードをアプリケーションサーバに送ります。

アプリケーションサーバはリクエストトークンとともにPINコードをTwitterサーバに送ることで、アクセストークンを得ます。

最後にクライアントに対して連携成功のメッセージを送信すれば、連携完了です。

以降、アプリケーションサーバはAPI keyと取得したAccessTokenを用いて、Twitterアカウントへのアクセスが可能になります。


アクセストークン取得のポイント

リクエストトークン、authorization URL、PINコードはすべて紐付いています。

(リクエストトークンからauthorization URL、authorization URLからPINコードが生成されるイメージです)

また、リクエストトークン生成時のタイミングでは、Twitterアカウントと紐付いていません

Twitterアカウントを紐付けるのはアクセストークンとPINコードになるので、実装するときは十分注意してください。

当時知らなかった私は、1回の連携リクエストに対して、2回リクエストトークンを発行してしまい、連携が上手くいきませんでした。


まとめ

本文では触れませんでたが、このような認可方式をOAuth認可方式と呼びます。

ユーザにユーザIDやパスワードを提供してもらうことなく、ユーザのアカウントにアクセスできるため、広く使われている手法です。

とはいえ、API keyAccessTokenを奪われると、簡単にアカウントを乗っ取ることが可能になってしまうので、十分注意しましょう。


参考リンク

【カンタローCGI】Twitterのアクセストークンとコンシューマキーを取得する