PHP Matsuri が一段落しましたので、ここでrubyの登場です。
どうも、ヤマモトです。
MA6も締切りが過ぎてしまいましたね。
僕も何か応募したいと思いつつ、ありきたりのサービスしか思いつかなく結局なにも応募せず。。。
MA6には当然入ってないんですが、スライド共有サービスの最大手であるSlideShareも、実はAPIを公開しています。
今回はそのAPIの、APIキーの発行からキーワード検索までについて紹介したいと思います。
SlideShare API
www.slideshare.net/developers
APIを利用するには、ユーザー登録が必要です。
すでに登録している方でも、APIキー発行を行なってください。
Apply for API Key
から行ないます。
発行処理を行うと、「APIキー」と「シークレットキー」がメールで届きます。
これらを使って、APIを利用します。
APIメソッドには様々な種類がありますが、基本的な「IDに紐づくデータの取得」をやってみます。
そのメソッドは、「Get Slideshow Information」で、
URLは、「http://www.slideshare.net/api/2/get_slideshow」
必要なパラメータは、
・api_key
・ts
・hash
・id
です。
上3つは、どのメソッドにも必要な認証のためのパラメーターです。
「api_key」はメールで送られたAPIキー。
「ts」は「タイムスタンプ」のことで、現在の時刻をUNIXのTimestamp型に変換したものを付与します。
最後の「hash」が若干手間で、「メールで送られたシークレットキー」+「現在の時刻のUNIX Timestamp」を、「SHA1でハッシュ値化したもの」です。
「ts」に付与する現在の時刻と、「hash」に使用する現在の時刻は同一でないといけませんが、厳密に現在の時刻でなくてもいいようです。
さらに、「id」を付与することで、そのIDに紐づくデータがxmlで返却されます。
ruby(rails)で書いたソースを下に表示します。
api_key = "API_KEY" secret_key = "SECRET_KEY" now_time = Time.now.to_i hash = Digest::SHA1.hexdigest("#{secret_key}#{now_time}") Net::HTTP.start('www.slideshare.net', 80) {|http| response = http.get("/api/2/get_slideshow?api_key=#{api_key}&ts=#{now_time}&hash=#{hash}&id=XXX") @xml_object = REXML::Document.new response.body } respond_to do |format| format.xml { render :xml => @xml_object } end |
これで該当のIDに関するデータがXMLで表示されます。
これを応用すれば、他のウェブサービスにも組み込んで、以下のようなキーワードにヒットするデータをサムネイル付きで表示する画面も作れます。
MA6のAPIリストにSlideShareがもし入っていたら、何らかの面白いサービスができたのかもしれません。