LoginSignup
25
27

More than 5 years have passed since last update.

Ruby で Twitter API の Application-only authentication のトークンを取得する方法

Last updated at Posted at 2013-04-12

Twitter API をよく叩いている人であればもうご存知だとは思いますが、つい先日、Twitter API の認証・認可方法の1つとして、Application-only authentication が追加されました。

この Application-only authentication はその名が示すとおり (?)、ユーザの Twitter アカウントや認証に依存しない、分析目的のためにツイートを収集するなどのアプリケーションを作る際に向いている認証方法となります。レートリミットも、通常の OAuth 認証のものとは異なり一部大きく緩和されていたりします。

認証の手順は、従来の OAuth 1.0a ベースの手順とは異なり、かなり簡単な手順でアクセス用のトークンを払い出せるようになっています。すでに Python などでも お試し用のプログラムが作られているほどです。

今回は私が慣れ親しんでいる Ruby で、/oauth2/token のエンドポイントを叩いてアクセス用トークンを取得するプログラムを書いてみました。

get_apponly_token.rb
require 'net/https'
require 'base64'
require 'uri'

Net::HTTP.version_1_2

CONSUMER_KEY = 'ここに consumer_key を設定する'
CONSUMER_SECRET = 'ここに consumer_secret を設定する'

bearer_token = "#{CONSUMER_KEY}:#{CONSUMER_SECRET}"
encoded_bearer_token = Base64.strict_encode64(bearer_token)

url = URI.parse("https://api.twitter.com/oauth2/token")

https = Net::HTTP.new(url.host, 443)
https.use_ssl = true

https.start do
  header = {}
  header["Authorization"] = "Basic #{encoded_bearer_token}"
  header["Content-Type"] = "application/x-www-form-urlencoded;charset=UTF-8"

  req = Net::HTTP::Post.new(url.path, header)
  req.body = "grant_type=client_credentials"

  resp = https.request(req)
  puts resp.body
end

このプログラムを実行するには、 http://dev.twitter.com/ でサインイン&アプリケーションの登録を済ませ、そこで払いだされた consumer_key / consumer_secret を上記プログラムの定数に仕込んであげる必要があります。

実行すると、

{"token_type":"bearer","access_token":"ここにトークンが設定される"}

のような出力が得られるので、この "access_token" に設定された文字列を、呼び出したい API の HTTP リクエストヘッダに

Authorization: Bearer アクセストークン

と設定して呼び出せば、ちょっと快適な Twitter API ライフが送れるようになります。

25
27
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
25
27