Ruby で Tumblr の OAuth Token を入手する一手法
背景
Tumblr API を使っていろいろやりたい*1. 私は,その第一歩を今日,踏み出したのです.
概要
API 関連の操作は tumblr_client GitHub - tumblr/tumblr_client: A Ruby Wrapper for the Tumblr v2 API という gem が出ているので,これを使えばよさそうです.でも,以下のように,consumer_key と secret だけでなく,access token と access token secret が必要とのこと.まずはこれを手に入れようと言うのが今回の挑戦です.
Tumblr.configure do |config| config.consumer_key = "consumer_key" config.consumer_secret = "consumer_secret" config.oauth_token = "access_token" config.oauth_token_secret = "access_token_secret" end
実践
さて探してみると,php などの参考プログラムはわりかしありますが,ruby があまりありません.数少なく引っかかる情報も,いまいちちゃんと動かないので困りました.結局以下のコードで解決しました.
require 'rubygems' require 'oauth' # 場合によっては gem install oauth する # これは tumblr api にアプリ登録するともらえる CONSUMER_KEY = "xxxx" CONSUMER_SECRET = "xxxx" consumer = OAuth::Consumer.new( CONSUMER_KEY,CONSUMER_SECRET, { :site => "http://www.tumblr.com", :request_token_path => "/oauth/request_token", :access_token_path => "/oauth/access_token", :authorize_path => "/oauth/authorize" } ) # ruby 単体でやる場合はこの :exclude_callback が重要 request_token = consumer.get_request_token(:exclude_callback => true) # ここで出力される URL にアクセスして, # アプリのアカウントに対するアクセスを許可する puts request_token.authorize_url # callback 先の url にくっついている oauth_verifier の文字列をここへコピペする # callback 先を http://sasquatch.github.io/tumblr.html とかにするとクエリ出してくれてべんりですよ # strip がないと改行がはいってしまって,400 Bad Request になってしまう # (こんなくだらない理由でハマった) verifier = gets.strip access_token = request_token.get_access_token(:oauth_verifier => verifier) puts access_token.token puts access_token.secret
それと見つけたツール
上記を ruby で動かせばいけますが,なんやわからないけど動かない場合は↓のツールを使うのがよいかもしれません. https://gist.github.com/monde/4577106 基本的に書いてあるとおりにコマンド実行すれば,良い感じに対話形式でやってくれるので,すてきです.