CodeZine(コードジン)

特集ページ一覧

mixiアプリによるソーシャルデータの活用

mixiアプリで始めるOpenSocial入門(4)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/11/04 14:00
目次

個人の情報の取得サンプル

 では早速、newFetchPersonRequestメソッドを使い、個人の情報を取得してみましょう。

 前回のサンプルでもソーシャル情報の取得を行いましたが、今回はより詳細な情報として、アプリを開いているVIEWERのすべての情報を表示します。

ソーシャル情報取得の流れ

 サンプルの解説に入る前に、ソーシャル情報取得の流れを確認しましょう。以下の手順で、OpenSocialアプリケーションからソーシャル情報を取得することができます。

DataRequestオブジェクトを使った、情報取得のサンプルコード
    // 1.DataRequestオブジェクトの作成
var dataRequest = opensocial.newDataRequest();
    // 2.リクエストの作成
var requestObject = dataRequest.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER);
    // 3.DataRequestオブジェクトへのリクエストの追加
dataRequest.add(requestObject, "viewer");
    // 4.DataRequestオブジェクトの送信
dataRequest.send(
    // 5.リクエストの結果をコールバック関数で処理
  function(response) {
    var viewer = response.get('viewer').getData();
    var msg = 'Hello ' + viewer.getDisplayName();
  });

 まずは、コードの大まかな流れについて概観します。

1. DataRequestオブジェクトの作成

 ソーシャル情報のリクエストの基点となるDataRequestオブジェクトはopensocial.newDataRequest関数で作成することができます。

2. リクエストの作成

 DataRequestオブジェクトの中に格納するリクエストは先ほど記したDataRequestオブジェクトのメソッド群で作成します。

 サンプルコードでは、VIEWERの情報を取得するためのリクエストであるnewFetchPersonRequestメソッドでリクエストを作成しています。

3. DataRequestオブジェクトへのリクエストの追加

 2.で作成したリクエストを、DataRequestオブジェクトのaddメソッドで追加します。この際、リクエストごとに任意の名前を付けることができます。ここで付けた名前は、OpenSocialコンテナからレスポンスが返ってきた時に使用します。

 サンプルコードでは、リクエストにviewerという名前を付けています。

4. DataRequestオブジェクトの送信

 DataRequestオブジェクトのsendメソッドを使って、OpenSocialコンテナに対し、情報のリクエストを行います。sendメソッドの引数にはコールバック関数を指定します。

 サンプルコードでは、その場で匿名関数としてコールバック関数を定義しています。

5. リクエストの結果をコールバック関数で処理

 OpenSocialコンテナでリクエストが処理されると、sendメソッドの引数に指定したコールバック関数に結果がDataResponseというオブジェクトとして渡されます。このDataResponseオブジェクトには、DataRequestオブジェクトに指定したリクエストに対応する結果がResponseItemというオブジェクトとして複数格納されており、それぞれは3.でリクエストごとに指定した名前で呼び出すことができます。

 サンプルコードではリクエスト時に指定したviewerという名前で結果を取得しています。

 以上がDataRequestオブジェクトを使ったリクエストの大まかな流れとなります。このうち、2.のリクエストの作成と、5.のコールバック関数での処理の部分が、リクエストの種類ごとに異なっていきます。

newFetchPersonRequestメソッドについて

 newFetchPersonRequestメソッドは個人の情報を取得するためのリクエストを作成します。

 DataRequestオブジェクトの各種リクエストを作成するメソッドは、作成時にオプションを指定することができます。newFetchPersonRequestメソッドの場合は2つの引数でオプションを指定します。

 メソッドの第1引数には、個人を特定するためのPersonIDというIDを指定します。このPersonIDは個人に紐付けられた不変のIDです。

 PersonIDはOpenSocial APIの中ではopensocial.IdSpec.PersonIdクラスとして定義されています。このクラスには以下の2つのフィールドが存在します。

opensocial.IdSpec.PersonIdクラスのフィールド
フィールド名 概要
opensocial.IdSpec.PersonId.OWNER OpenSocialアプリケーションのOWNERを指すPersonID
opensocial.IdSpec.PersonId.VIEWER OpenSocialアプリケーションのVIEWERを指すPersonID

 これらのフィールドを用いて、OWNER・VIEWERの情報を取得するリクエストを作成することができます。

 また、友達の情報を取得した場合には、それぞれの個人を特定するためのPersonIDが結果として返ってきますので、そこから個人の情報を取得することもできます。

 newFetchPersonRequestメソッドの第2引数には、パラメータ(名前と値のペア)を複数格納した連想配列を追加パラメータとして指定します。第2引数は省略することもできます。

 パラメータとして扱える項目は、opensocial.DataRequest.PeopleRequestFieldsクラスのフィールドとして定義されています。なお、このクラスでは個人の情報を取得する際のパラメータだけでなく、次回説明する友達の情報を取得する場合のパラメータも定義されています。PeopleRequestFieldsクラスの多くのフィールドは、友達の情報を取得する場合に使用し、newFetchPersonRequestメソッドでは、PROFILE_DETAILSフィールドのみを使用します。他のフィールドについては後述します。

 PROFILE_DETAILSパラメータは、デフォルトで取得できる情報以外のフィールドを取得する場合に設定します。取得できるフィールドはopensocial.Person.Fieldで定義されています。これらのフィールド以外にも、OpenSocialコンテナごとに取得可能なフィールドが定義されている場合があります。以下にmixiで取得できるフィールド一覧を示します。

mixiで取得できるソーシャル情報の一覧
項目 デフォルトで取得 指定する定数
ID opensocial.Person.Field.ID
ニックネーム opensocial.Person.Field.NICKNAME
プロフィール写真のURL opensocial.Person.Field.THUMBNAIL_URL
プロフィールURL × opensocial.Person.Field.PROFILE_URL
現住所(県のみ) × opensocial.Person.Field.ADDRESSES
年齢 × opensocial.Person.Field.AGE
生年月日 × opensocial.Person.Field.DATE_OF_BIRTH
性別 × opensocial.Person.Field.GENDER
血液型 × mixi.PersonField.BLOOD_TYPE(mixiの独自拡張)
アプリケーションをインストールしているかどうか × opensocial.Person.Field.HAS_APP

 表にも示したとおり、mixiアプリでは、デフォルトでID(先ほど紹介したPersonID)、ニックネーム、プロフィール写真のURLを取得します。それ以外の情報が必要な場合には、PROFILE_DETAILパラメータを設定する必要があります。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:mixiアプリで始めるOpenSocial入門

もっと読む

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

  • WINGSプロジェクト 土井 毅(ドイ ツヨシ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5