mixiアプリ作成入門(6) – マイミク全員を表示する -
関東甲信地方の梅雨明け記念におもむろに投稿します。
今回も、いつものマイキーがお送りしてます。
前回はマイミク情報の取得方法についてご紹介しました。
しかし、ご紹介したサンプルではデフォルトの 20 件までしか表示されなかったかと思います。
そこで今回は、マイミク全員を一覧表示する方法をご紹介します。
以下は前回使用したサンプルコードです。
<?xml version=”1.0″ encoding=”UTF-8″ ?>
<Module>
<ModulePrefs title=”マイミク一覧”>
<Require feature=”opensocial-0.8″/>
</ModulePrefs><Content type=”html”>
<![CDATA[<div id="friends"></div>
<script type="text/javascript">
var params = {};
params[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.OWNER;
params[opensocial.IdSpec.Field.GROUP_ID] = “FRIENDS”;
var idSpec = opensocial.newIdSpec(params);var req = opensocial.newDataRequest();
req.add(req.newFetchPeopleRequest(idSpec), “friends”);
req.send(function(data) {
output = “”;
if (data.hadError()) {
var msg = data.getErrorMessage();
output += msg // エラー時は、とりあえずエラーメッセージをそのまま表示させる
} else {
var friends = data.get(“friends”).getData();friends.each(function(friend) {
var id = friend.getId();
var name = friend.getDisplayName();output += name + ‘<br />’;
});
}
document.getElementById(‘friends’).innerHTML = output;
});</script>
]]>
</Content>
</Module>
これですごく質素なマイミク一覧が取得できたわけですが、このままではマイミク情報が 20 件までしか表示されませんでしたね。
全マイミクを呼び出すためには、DataRequest オブジェクト使用時にその指定をする必要があるので、リクエスト送信前にそのためのコードを追記しましょう。
今回は、DataRequestオブジェクト生成前に追記してみました。
var req = opensocial.newDataRequest(); // このあとに2行追記
var dp = {};
dp[opensocial.DataRequest.PeopleRequestFields.MAX] = 1000;
デフォルトでは、1リクエストあたりの取得される最大件数を指定する PeopleRequestFields.MAX が 20 に設定されているため、20 件しか表示されていなかったわけです。
この最大取得件数を 1000 に設定します。
そして、dp変数をnewFetchPeopleRequest()の第二引数として付与するよう変更します。
req.add(req.newFetchPeopleRequest(idSpec, dp), “friends”);
以上でマイミク全員を取得するための変更は終了です。
たった3行のコードを追加・変更するだけでしたね。
ちなみに、MAX として指定した「1000」の数字はどこから出てきたかというと、マイミク登録可能数が最大1000人だからです。(但し、公認アカウントについてはこの制限を受けないようです。)
しかし、この方法ではmixi側での最大数に応じてアプリ側も適宜この数字を変えなければならない可能性があるので、わたしたちは常にその恐怖と戦い続けなければなりません。
もっとスマートに全マイミクが取得できる方法があればいいんですけどね。。
次回は、そんなもしもの仕様変更にも負けないための一策として、ページ送りでマイミク一覧を表示する方法をご紹介します。
Post Footer automatically generated by Add Post Footer Plugin for wordpress.



