{ 2010.11.9 }

SlideShare APIを使う

    はてなブックマーク - SlideShare APIを使う
    このエントリーをはてなブックマークに追加

    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がもし入っていたら、何らかの面白いサービスができたのかもしれません。

    Comments are closed.