Ruby から Twitter API を使用するサンプル (SSL / Basic 認証)
Web 上を探すと Ruby で Twitter API を使用する方法の説明やらサンプルやらが色々ありますが、Basic 認証をするだけで SSL プロトコル (HTTPS 通信) を使っていないものしか見当たりませんでした。 あんまりネットワーク関係のことは詳しくないんですが、パスワードを送っているからには SSL を使った方がいいですよね・・・?
というわけで HTTPS 通信で Ruby から Twitter API を使用するサンプルです。 Ruby 1.9 での動作を確認しています。 また、下記サンプルを動作させるためにはあらかじめ、PEM 形式で保存された Twitter の CA 証明書ファイルを取得する必要があります。 取得方法は後述します。
サンプルコード
Net::HTTP モジュールを使用しています。 詳しいオブジェクトやメソッドの詳細は Ruby リファレンスマニュアルの Net::HTTP の項目 を見てください。
#! /usr/bin/ruby1.9
# -*- coding: utf-8 -*-require "net/https"
# Twitter のユーザ名
user_name = "XXXXXXXX"
# Twitter のパスワード
password = "XXXXXXXX"
# PEM 形式で保存された Twitter の CA 証明書ファイルのパス
# (あらかじめ Twitter のサーバから取得しておく)
ca_file_path = "./twitter.pem"
# 使用する Twitter API 名 (今回の場合は GET メソッドを使用するものでなければならない)
api_method_name = "/statuses/friends_timeline.xml"
# 取得した XML 文字列を格納するための変数
response_xml = nil
# HTTPS プロトコルを使用し, Basic 認証を使って Twitter API を使用
# Net::HTTP オブジェクト生成
# cf. http://www.ruby-lang.org/ja/man/html/Net_HTTP.html
# cf. http://www.ruby-lang.org/ja/man/html/net_https.html
https = Net::HTTP.new( "twitter.com", "443" )
https.use_ssl = true
https.ca_file = ca_file_path
https.verify_mode = OpenSSL::SSL::VERIFY_PEER
https.verify_depth = 5
# セッション開始
https.start do |h|
# Net::HTTPRequest オブジェクト生成
# cf. http://www.ruby-lang.org/ja/man/html/Net_HTTPRequest.html
req = Net::HTTP::Get.new( api_method_name )
req.basic_auth( user_name, password )
# リクエストを送信し, Net::HTTPResponse オブジェクトを取得
# cf. http://www.ruby-lang.org/ja/man/html/Net_HTTPResponse.html
res = h.request( req )
if ( res.code == "200" ) then
# 取得成功
response_xml = res.body
else
# 取得失敗
raise Exception.new( "取得失敗" )
end
end
# 取得結果の表示
puts response_xml
exit 0
Twitter の CA 証明書ファイルの取得方法
Firefox 3.5 以上 *1 を使用し、Twitter の CA 証明書ファイルを取得する方法を記します。 通常の API を使用する際に使う CA 証明書ファイルは https://api.twitter.com/ から取得し、User Streaming API を使用する際に使う CA 証明書ファイルは https://userstream.twitter.com/ から取得します。
- まず、Firefox 3.5 で https://api.twitter.com/ (通常の API 用) または https://userstream.twitter.com/ (User Streaming API 用) に接続する
- ブラウザのメニューバーの 「ツール」 → 「ページ情報」 でページ情報を開く
- 「セキュリティ」 を選択する
- 「証明書を表示」 ボタンを押し、証明書ビューアを開く
- 「詳細」 タブを選択
- 証明書の階層から 「*.twitter.com」 または 「userstream.twitter.com」 を選択 *2
- ウィンドウ下部の 「エクスポート」 ボタンを押し、保存ダイアログを開く
- ファイルの種類は 「証明書パスを含む X509 証明書 (PEM)」 を選び、名前を適当につけて保存する
以上です。 保存したファイルが Twitter の CA 証明書ファイルとなります。