OpenSocial をちょこっとやってみようと思い、サクっと試せそうな mixi アプリでやってみた。
JavaScript API
サンプルに記載されている程度のことしかやってないけど、
ガジェットを XML で記載して、そこに埋め込む(もしくは参照させる)形で JavaScript を記載するようだ。
こんな感じでプロフィール情報とフレンド情報を取得し、表示させる。
フレンド情報はページング処理している。
上記の例だと最初に 20 件のみ表示させて、[次へ][前へ]ボタンを押下すると
次の 20 件、前の 20 件を表示できるようにしている。
RESTful API
JavaScript API を実行できる OpenSocial コンテナ以外で実行するにはこちらを使うようだ。
ちょっとネックだったのが 2-legged OAuth で使用する署名の作成方法。
mixiDeveloperCenter の 2-legged OAuthによるAPIアクセスを見ても
Authorization ヘッダに追加する情報が分かりにくく(というか、間違っている気がする)、
Java でのサンプルも無かったので自分で作ってみた。
もうちょっと頑張ったら 2-legged OAuth の署名付きリクエスト用に汎用的に使えるかもしれないけど、
今のところ汎用性を持たせようとしつつも mixi アプリ向け。
依存ライブラリは以下の通り(微妙に多いな…ランダム文字列生成を commons-lang 以外でやれば一つ減るか。)
  • commons-codec.jar
  • commons-lang.jar
  • commons-logging.jar
  • httpclient.jar
  • httpcore.jar
mixiDeveloperCenter の説明が間違っているかも、というのは
Authorization ヘッダに追加する値にはダブルクオートが要らないところ。
あと、改行コードを含めるのかどうかがいまいち分かりにくいけど、どうやら要らないようだ。
Map params = new HashMap();
params.put("xoauth_requestor_id", REQUESTOR_ID);
OAuthClient client = new OAuthClient(
 CONSUMER_KEY, CONSUMER_SECRET, "http://api.mixi-platform.com/os/0.8/people/@me/@self", params);
HttpResponse response = client.execute();
System.out.println(JSON.encode(JSON.decode(response.getEntity().getContent()), true));
こんな感じで OAuthClient に Consumer Key, Consumer Secret, リクエストパラメータを与える。
(上記の例ではプロフィール情報を JSON 形式で取得している)

Copyright© 2011-2021 Shunsuke Otani All Right Reserved .