Twitterのデベロッパーアカウント以外のアクセストークンを取得したい時(ruby / Rails)

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 にログインしているアカウントを、アクセストークンを取得したいアカウントに切り替えておきましょう。

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 を使った方法が一番簡単でした。