mixiアプリ » mixiアプリ for PC » mixiアプリを作ってみよう » 同級生を扱ってみよう
同級生を扱ってみよう
mixi同級生というサービスによって、ユーザは自分の母校を登録することができます。そして、母校や在学中の学校、学科、卒業年といった情報を登録することで、今まで疎遠だった同級生と再会することができるかもしれません。そして、マイミクシィというソーシャルグラフの他に、mixiには「同級生」という種類のソーシャルグラフが加わることとなります。
mixiアプリ向けに、同級生を扱うためのAPIが提供されます。これは「Classmates API」と呼ばれています。Classmates APIを使うことで、同窓会の予定を調整したり、同級生ならではの内輪ネタを楽しんだり・・・といったmixiアプリを開発することができるようになります。
Classmates APIでできること
Classmates APIを利用することで、mixiアプリの利用者の中で同級生は誰か?といったことが把握できるようになります。具体的には、Classmates APIによって開発者は以下の情報を取得することが可能になります。
- mixiアプリの利用者が登録している学校・学部学科・卒業年の組み合わせを一意に特定するためのID(学校トークン)
- mixiアプリの利用者が登録している学校の区分(学校区分)
mixiアプリのユーザーが登録している学校情報の一覧を取得することができます。また、mixiアプリ上でユーザーに登録している学校の一覧を提示し、ユーザーに選択させることも可能です。その際、選択された学校の学校トークンおよび学校区分が得られます。
Classmates APIを使って取得した「ユーザーID」「学校トークン」をバックエンドサーバに転送して管理することで、ある学校を登録しているユーザーの一覧を把握することができるようになります。その同級生一覧を使って、マイミクシィだけでなく、旧友とコラボレーションするためのmixiアプリを開発することができるようになるでしょう。
APIリファレンス
Classmates APIの利用宣言
Classmates APIを利用するために、Gadget XMLファイルに以下の記述を行います。
<Module>
<ModulePrefs …>
・・・
<Require feature="classmates" />
</ModulePrefs>
</Module>
学校トークンの取得
mixiアプリの利用者に登録されている学校の一覧を提示し、その中から学校を一つ選択してもらいます。mixiアプリは、選択された学校の学校トークンを得ることができます。これを行うために、mixi.classmates.requestFetchSchool()関数を利用します。
mixi.classmates.requestFetchSchool(mixi.classmates.SchoolSelectType.LIST, function(response) {
var school = response.getData()["school"];
var schoolToken = school.getField(mixi.classmates.SchoolField.TOKEN);
var schoolDiv = school.getField(mixi.classmates.SchoolField.DIVISION);
// do something...
});
requestFetchSchool()関数は、以下の引数を受け付けます。
- 初期表示されるページの種別
- mixi.classmates.SchoolSelectType.LIST – 登録学校一覧から選択
- mixi.classmates.SchoolSelectType.DETAIL – 詳細選択
- コールバック関数
requestFetchSchool()関数をmixiアプリから呼び出した直後に、学校を選択するためのポップアップ画面が表示されます。mixiアプリの利用者がポップアップ画面に表示された学校一覧の中から、一つ学校を選択します。その後ポップアップ画面は消去されます。
ポップアップ画面の消去後に、requestFetchSchool()関数の引数として指定したコールバック関数が自動的に呼び出されます。この関数には、ユーザーが選択した学校の情報が引数として渡されます。その情報は、引数のオブジェクトからgetData()関数を呼び出し、その結果のschoolプロパティ値として取り出すことが可能です。具体的には、mixi.classmates.Schoolオブジェクトが結果として得られます。
取得したSchoolオブジェクトのgetField()関数にSchoolField.TOKENを指定して呼び出すことで、学校トークンを得ることができます。また、SchoolField.DIVISIONを指定してgetField()関数を呼び出すことで、学校区分を得ることが可能です。
ユーザーが登録している学校情報一覧の取得
mixiアプリを利用しているユーザーが登録した学校の情報を得ることが可能です。
var req = opensocial.newDataRequest();
req.add(mixi.classmates.newFetchSchoolsRequest(opensocial.IdSpec.PersonId.VIEWER), "schools");
req.send(function(data) {
var schools = data.get("schools").getData();
schools.each(function(school) {
var schoolToken = school.getField(mixi.classmates.SchoolField.TOKEN);
var schoolDiv = school.getField(mixi.classmates.SchoolField.DIVISION);
// do something...
});
});
mixi.classmates.newFetchSchoolsRequest()関数を使用することで、ユーザーが登録している学校の学校トークンおよび学校区分の一覧を取得することが可能です。newFetchSchoolsRequest()関数の引数は、VIEWERのみ指定することが可能です。
リクエストの取得結果として、登録している学校情報を持つオブジェクトの集合を得ることができます。これは、opensocial.Collectionオブジェクトであるため、each()関数を使って各学校情報を取り出すことが可能です。
各学校情報は、mixi.classmates.Schoolオブジェクトとなります。SchoolオブジェクトのgetField()関数をSchoolField.TOKENを指定して呼び出すことで、学校トークンを得ることができます。また、SchoolField.DIVISIONを指定してgetField()関数を呼び出すことで、学校区分を得ることが可能です。
学校区分の定数
学校情報に含まれる学校区分を識別するための各種定数は、mixi.classmates.SchoolTypeにて定義されています。
- PRIMARY_SCHOOL – “01″ 小学校
- JUNIOR_HIGH_SCHOOL – “02″ 中学校
- HIGH_SCHOOL – “03″ 高等学校
- UNIVERSITY – “04″ 大学
- COLLEGE – “05″ 短期大学
- GRADUATE_SCHOOL – “06″ 大学院
- TECHNICAL_SCHOOL – “07″ 専門学校・予備校
- TECHNICAL_COLLEGE – “08″ 高等専門学校
- SECONDARY_SCHOOL – “09″ 中等教育学校
- OTHER – “10″ その他の教育機関
同級生招待機能
ユーザーがmixiアプリの利用を同級生に勧めるために、招待機能を提供しています。この招待機能は、mixi.classmates.requestShareApp()関数を使用して呼び出します。
mixi.classmates.requestShareApp(function(response) {
if (response.hadError()) {
var errCode = response.getErrorCode();
// do something...
} else {
// do something...
}
});
requestShareApp()関数の引数として、招待が行われた後に呼び出されるコールバック関数を指定します。requestShareApp()関数を呼び出すと、ユーザーにポップアップ画面が表示されます。ユーザーはそのポップアップ画面に表示された同級生を選択します。
招待されたユーザーは、以下の記述にて取得することが可能です。
mixi.classmates.requestShareApp(function(response) {
var recipientIds = response.getData()["recipientIds"];
// do something...
});
エラーコード
Classmates APIの呼び出し時に、いくつか結果として得られる可能性があるエラーコードがあります。これらのエラーコードは、ResponseItemオブジェクトのgetErrorCode()関数を呼び出すことによって得ることが可能です。エラーコードの種別によって、適切な処理を行ってください。
| エラーコード | 発生する状況 |
|---|---|
| 400 (BAD_REQUEST) | 認証情報が不正、取得対象IDが未指定 |
| 403 (FORBIDDEN) | 取得権限がない、セレクタ(@self, @sfriendsなど)が未指定 |
| 500 (INTERNAL_SERVER_ERROR) | mixi側の内部エラー |