LoginSignup
22
21

More than 5 years have passed since last update.

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

Posted at

今更ながら、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のアクセストークンとコンシューマキーを取得する

22
21
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
22
21