mixiアプリを動かしてみよう(応用編)

2010年9月29日(水)
森 和之

外部と連携しよう

mixiアプリではJavaScriptで動くため、外部ドメイン制約を超えたデータを取得するのに便利なgadgets.io.makeRequestというAPIが用意されています。makeRequestは、普通のAjax通信とは異なり、どんなドメインのデータも取得出来、メソッドもGET/POST/PUT/DELETEすべてをサポートしており、レスポンスもTEXT/DOM(HTML)/FEED/JSONと幅広く解釈出来るため非常に強力です。署名も付与出来るため、本当にmixiのコンテナを経由したことを証明出来、ユーザーIDの改ざんを防ぐことが出来ます。

makeRequestを使ってはてなブックマークのhotentryのRSSを取得するコードは以下のとおりです。

01<!--//--><![CDATA[// ><!--
02 
03var params = {};
04params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.FEED;
05params[gadgets.io.RequestParameters.NUM_ENTRIES] = 10;
06gadgets.io.makeRequest("http://b.hatena.ne.jp/hotentry.rss",
07function(response) {
08    if (!response.data) {
09        // エラー処理
10        var err = response.errors[0];
11        return false;
12    }
13    // 結果を取得
14    for (var key in response.data.Entry) {
15        var entry = response.data.Entry[key];
16        var title = entry.Title;
17        var link = entry.Link;
18    }
19}, params);
20 
21//--><!

ここで重要なのはgadgets.io.makeRequest関数です。外部のコンテンツを取得するには、urlと取得する時の設定を用意しておいてmakeRequest関数を呼び出すだけです。

gadgets.io.makeRequest(url, callback, opt_params)

第1引数にはurlを文字列で指定します。第2引数にはコールバック関数を指定します。コールバック関数の引数にはmakeRequestの結果が入っています。第3引数にはgadgets.io.RequestParametersをキーに持つObject(hash)を指定します。ここではCONTENT_TYPEにFEEDを、NUM_ENTRIESに10を指定しています。

署名の検証は今回は解説しません。詳しくは以下のページを参考にしてください。

詳細情報:mixi Developer Center「外部サーバを呼び出してみよう」

mixiの独自APIを使ってみよう

コミュニティは、ユーザーの所属や属性、そして関心のある分野など様々な情報を含みます。このコミュニティという機能はOpenSocialでは定義されていませんが、mixi独自のAPIとして提供されています。mixi独自APIは他にもありますが、今回はコミュニティの情報を取得してみましょう。viewerの所属しているコミュニティの一覧を取得するコードは以下のとおりです。

01<!--//--><![CDATA[// ><!--
02 
03var req = opensocial.newDataRequest();
04req.add(mixi.newFetchCommunityRequest(opensocial.IdSpec.PersonId.VIEWER),
05"communities");
06req.send(function(data) {
07    var communities = data.get("communities").getData();
08    //データを取得
09    communities.each(function(community) {
10        var id = community.getId();
11        var name = community.getName();
12        var thumbnail = community.getField(mixi.Community.Field.THUMBNAIL_URL);
13    });
14});
15 
16//--><!

コミュニティを取得するにはmixi.newFetchCommunityRequestを使います。今までと違って、opensocialというnamespaceではなく、mixiのnamespaceであることに注意してください。これをnewFetchPersonRequestと同じようにDataRequestにaddして取得します。

Object newFetchCommunityRequest(id, opt_params)

第1引数には取得する対象を、第2引数は省略します。

詳細情報:mixi Developer Center「コミュニティ情報を取得しよう」

株式会社ミクシィ

パートナーサービス部 第1プラットフォーム開発チーム
1985年生まれ。2007年に株式会社ミクシィの最初の新卒として入社。Find Job !の開発を半年間経験したのち、mixi開発グループに移動。mixiアプリのプロジェクトの立ち上げから開発を担当し、以降現在までmixiアプリ及び mixi Platformの開発をしている。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています