開発
自分のアクセストークンとシークレットトークンを使ったtwurlによるtwitter認証
Takumi Yamashita
みなさんtwitterAPIは使ったことはあるでしょうか?
twitterAPIを利用するにはOAuth認証がほぼ必須となっており自前でOAuthを実装するのは結構しんどいです。
なので、大抵の場合は言語ごとに誰かしらが用意してくれたtwitterライブラリを活用するかと思います。
その中の一つに twurl というものがあります。
これは、コマンドライン上でtwitterAPIを楽に叩く事ができる優れものです。
linuxコマンドの要領で使えるので言語に縛られること無く使うことができるため、簡単なスクリプトを組んだりするのには適していると言えるでしょう。
主な使い方はこちらをご参照下さい。
- アプリの登録
- アプリとアカウントの認証
- 主なtwurl コマンド
の手順等が載っています。
通常、twurlではアプリの認証を行う際にターミナルからリンクを飛んで認証ページに行き認証を行うという手順を踏みます。
実は認証方法はもう一つあり、twurlのヘルプを見てみると
-c, --consumer-key [key] Your consumer key (required) -s, --consumer-secret [secret] Your consumer secret (required) -a, --access-token [token] Your access token -S, --token-secret [secret] Your token secret
というオプションが使えることが分かります。
access-token と token-secret というのはユーザーがアプリを認証した際に発行されるトークンでこれらは基本的に不変です。
[参考]
Technical
How long does an access token last?
We do not currently expire access tokens. Your access token will be invalid if a user explicitly rejects your application from their settings or if a Twitter admin suspends your application. If your application is suspended there will be a note on your application page saying that it has been suspended.
なので、別の方法でこちらの2つの値を取得しておけばターミナルからリンクを飛んだりする必要なく認証を行うことができます。
ということで、
twurl authorize --consumer-key (先ほど登録したアプリのConsumer Key) --consumer-secret (先ほど登録したアプリのConsumer Secret) -a (自分のアクセストークン) -S (自分のシークレットトークン) -u (twitterユーザーid)
とやると失敗します。
これはtwurlのバグのせいで、現在(2016/9/01)使えないです。ですが、このバグはそんなに難しくないため結構簡単に直せます。
プルリクを送っている最中ですが落ちているのでとりあいず以下の通りの変更をします。
https://github.com/twitter/twurl/pull/69/files
twurl authorize --consumer-key (先ほど登録したアプリのConsumer Key) --consumer-secret (先ほど登録したアプリのConsumer Secret) -a (自分のアクセストークン) -S (自分のシークレットトークン) -u (twitterユーザーid)
これで上手くいきます。
あとは、自由にAPIを叩いて下さい。
ちなみに -u (twitter ユーザーid) をつけないと認証しているアカウントを管理している .twurlrc が壊れて twurl accounts コマンドが使えなくなるので注意です。