今さらながらmixiアプリでRESTful APIが使えることに気づいたわけで、早速試してみました。
mixiのデベロッパー向けサイトに、サンプルコードも付いて詳しく説明されているので、これを参考にして書いていけば問題なさそうです。
実際のリクエストには、「Consumer Key」と「Consumer Secret」を使い、2-legged OAuthによって適切に署名をする必要があります。
「Consumer Key」と「Consumer Secret」は、アプリごとに割り当てられており、mixiアプリ設定画面より、確認することができます。
注意する点は「xoauth_requestor_id」をリクエストに付加する必要があるということです。公式サイトから引用です。
RESTful APIにアクセスする際に、xoauth_requestor_idパラメータによって、誰の権限でアクセスを行うかを指定することが必要になります。パラメータ値は、対象ユーザのIDとなります。このユーザIDについて、「一定時間内にWebブラウザで対象のmixiアプリを起動したユーザ」のIDのみ指定することが可能です。
対象ユーザが対象のmixiアプリを起動していない、もしくは起動から一定時間が経過した後にRESTful APIにアクセスを行った際には、HTTPレスポンスコードとして「401 Unauthorized」が返却されます。
対象ユーザのID、すなわちコンテナから送られてくる「opensocial_viewer_id」を指定することになります。
下記のようなコードで動かすことが出来ました。署名にはoauthライブラリを使います。
require 'oauth' consumer = OAuth::Consumer.new(「アプリのConsumer Key」, 「アプリのConsumer Secret」, {:site => 'http://api.mixi-platform.com'}) end_point = 'http://api.mixi-platform.com/os/0.8' req = consumer.request(:get, end_point + '/people/@me/@self' + '?xoauth_requestor_id=' + opensocial_viewer_id) JSON.parse(req.body) # JSONデータをオブジェクト化
公式にはRubyのコードがなかったようなので載せておきます。