個人の情報の取得サンプル
では早速、newFetchPersonRequestメソッドを使い、個人の情報を取得してみましょう。
前回のサンプルでもソーシャル情報の取得を行いましたが、今回はより詳細な情報として、アプリを開いているVIEWERのすべての情報を表示します。
ソーシャル情報取得の流れ
サンプルの解説に入る前に、ソーシャル情報取得の流れを確認しましょう。以下の手順で、OpenSocialアプリケーションからソーシャル情報を取得することができます。
// 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.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で取得できるフィールド一覧を示します。
| 項目 | デフォルトで取得 | 指定する定数 |
| 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パラメータを設定する必要があります。
