Twitterのデベロッパーアカウント以外のアクセストークンを取得したい時(ruby / Rails)
September 22, 2020
例えば bot のようなものを作るとして、デベロッパーアカウント以外のアカウントに自動ツイートさせたい時に、そのアカウントのアクセストークンを取得する方法について。
キーとシークレットの整理 #
Twitter のデベロッパーアカウントを取得すると、以下4種類のキー、シークレットが利用できるようになります。
- Consumer (API) Key
- Consumer (API) Secret
- Access Token
- Access Secret
上2つはアプリが API を利用するときに使う ID とパスワードで、アプリごとに固有です。つまり、あるアプリが API を利用する際には、常にこの Consumer (API) Key、Consumer (API) Secret を使用して API にアクセスするということです。API 側から見ると、この ID とパスワードを元にアプリを認証していることになります。
対して下2つは、アプリがユーザアカウントを操作するときに使うユーザの ID とパスワードにあたるものです。これは「アプリとユーザ」という組み合わせに対して固有です。つまり、アプリがユーザ A を操作するときにはユーザ A の Access Token、Access Secret が必要になり、ユーザ B を操作するときにはユーザ B の Access Token、Access Secret が必要になります。
デベロッパーアカウント画面に表示されるのは自分のトークン #
Twitter のデベロッパーアカウント画面から確認できる Access Token、Access Secret は誰のアクセストークンなのかというと、それはデベロッパーアカウントに紐づいた Twitter アカウントのトークンです。
つまり「Consumer (API) Key / Consumer (API) Secret」と、この「Access Token / Access Secret」を使用すれば、デベロッパーアカウントに紐づいた Twitter アカウントに、自動ツイートさせるなどが可能になります。
別アカウントを操作したい場合 #
例えばいくつかのアプリを開発しているとして、アプリごとにツイッターアカウントを作成し、API を利用してそのアカウントにツイートさせるなどの操作したい場合があるでしょう。
この場合、その別アカウントで再びデベロッパーアカウント申請をすることも考えられますが、1つのデベロッパーアカウントさえあれば API 自体は使えます。デベロッパーアカウント申請を再び行うのも手間でしょう。別アカウントを操作したいというときは、そのアカウントのアクセストークンさえ取得できればいいわけです。
別アカウントのアクセストークンの取得方法 #
ようやく本題ですが、デベロッパーアカウントではない、他の自分のアカウントのアクセストークンを取得する方法についてです。
私は主に ruby を使っており、ruby の gem に便利なものがあるのでそれを利用します。(本記事のタイトルには Rails と入っていますが、実際には ruby しか使いません)
使うのは「get-twitter-oauth-token」という gem です。以下は GitHub のリンクです。
https://github.com/jugyo/get-twitter-oauth-token
では、早速進めていきます。
まずはローカルのターミナルから以下を実行して gem をインストールします。
gem install get-twitter-oauth-token
すると、「get-twitter-oauth-token」と「oauth」という2つの gem がインストールされます。以下は上記コマンドの実行結果例です。
Fetching get-twitter-oauth-token-1.1.0.gem
Fetching oauth-0.5.4.gem
Successfully installed oauth-0.5.4
Successfully installed get-twitter-oauth-token-1.1.0
Parsing documentation for oauth-0.5.4
Installing ri documentation for oauth-0.5.4
Parsing documentation for get-twitter-oauth-token-1.1.0
Installing ri documentation for get-twitter-oauth-token-1.1.0
Done installing documentation for oauth, get-twitter-oauth-token after 0 seconds
2 gems installed
インストール後、gem を実行します。
get-twitter-oauth-token
実行後、質問されるままに Consumer Key、Consumer Secret を入力します。その後、ブラウザで Twitter の画面が開いて PIN コードが表示されるため、これをコピーし、ターミナルにペーストしましょう。(以下は Twitter の認証画面の例です)
なお事前に、Twitter にログインしているアカウントを、アクセストークンを取得したいアカウントに切り替えておきましょう。
PIN コード入力後、アクセストークンとアクセスシークレットが表示されます。
以下は実行例です。Consumer Key、Consumer Secret、PIN を入力すると、(Access) Token および(Access) Secret が表示されます。
[~] % get-twitter-oauth-token
Consumer Key: XXXXXXXXXXXXXXXXXXXXXXXXX
Consumer Secret: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
PIN: 1234567
Token: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Secret: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
このアクセストークンとシークレットを利用すると、そのアカウントの操作が行えるようになります。
gem の削除方法 #
アクセストークン取得後は gem を残しておいても良いですが、今後すぐに使う必要がなければ、片付けという意味でひとまず gem を削除してしまうのもよいでしょう。
下記を実行すると、今回インストールした gem が削除できます。
gem uninstall get-twitter-oauth-token oauth
以上 #
検索すれば php や python などを使ったアクセストークン取得スクリプトも見つかりますが、個人的には今回の ruby の gem を使った方法が一番簡単でした。