Hatena::ブログ(Diary)

vivid memo このページをアンテナに追加 RSSフィード

vivid code というサイトのメモ代わりに記事を書いていました。
現在ははてなブログに移行し、「ひだまりソケットは壊れない」 というブログで記事を書いています。 はてな id も id:nobuoka に変更しました。

2009-10-31

Ruby から Twitter API を使用するサンプル (SSL / Basic 認証)

Twitter の Basic 認証のサポートは既に終了しました。 本記事中で参考になるのは一番最後の 「CA 証明書ファイルの取得方法」 ぐらいだと思います。

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/ から取得します。

  1. まず、Firefox 3.5 で https://api.twitter.com/ (通常の API 用) または https://userstream.twitter.com/ (User Streaming API 用) に接続する
  2. ブラウザのメニューバーの 「ツール」 → 「ページ情報」 でページ情報を開く
  3. 「セキュリティ」 を選択する
  4. 「証明書を表示」 ボタンを押し、証明書ビューアを開く
  5. 「詳細」 タブを選択
  6. 証明書の階層から 「*.twitter.com」 または 「userstream.twitter.com」 を選択 *2
  7. ウィンドウ下部の 「エクスポート」 ボタンを押し、保存ダイアログを開く
  8. ファイルの種類は 「証明書パスを含む X509 証明書 (PEM)」 を選び、名前を適当につけて保存する

以上です。 保存したファイルが Twitter の CA 証明書ファイルとなります。

*1:Firefox 3.6 でも確認しました。

*2:実際にはどれでも良い

jugyojugyo 2010/02/06 21:49 大変参考になりました!

komagatakomagata 2010/04/06 15:36 同じく参考になりました。ありがとうございます。

vividcodevividcode 2010/10/21 00:52 https://twitter.com/ から取得した CA 証明書を使って API を使うことができなくなっていたので記事内容を変更しました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証