mixi Developer Center (ミクシィ デベロッパーセンター)

ニュース » mixiアプリ » mixiアプリAPIに関する仕様変更のご案内

mixiアプリAPIに関する仕様変更のご案内

2009.05.14 mixiアプリ

mixiアプリのAPIに関して、仕様が変更となる点がございますのでご案内いたします。

開発者の皆様におきましては、既にmixiアプリの開発を開始されていることと存じますが、この度、OpenSocial 標準仕様への準拠等の目的により、変更を行います。事前のご了承をよろしくお願いいたします。

※以下にご案内する内容につきましても、今後変更となる可能性がありますことをご了承ください。

変更適用日

下記の仕様変更は、2009年6月10日(水)から適用となります。それまでに下記内容をご覧の上、開発されているmixiアプリへの対応をお願いいたします。

変更内容

今回の仕様変更の詳細は、以下のとおりです。

ユーザIDの採番ルールの変更

mixiアプリ内で扱われているユーザIDの採番ルールについて変更いたします。

現状

現状、mixiアプリ内で扱われているユーザIDは、以下のルールで決定されています。

mixi.jp:<mixiのID><20桁のランダム文字列>
mixi.jp:<mixiのID><40桁のランダム文字列>

※5月20日追記:20桁ではなく正しくは40桁でした。ご指摘ありがとうございました。

変更後

API にて扱われるユーザIDとして、mixi.jp あるいは platform001.mixi.jp で扱われているユーザIDをそのまま適用いたします。

今までのIDのリクエストは各APIを呼び出す際に引き続き受け付けますが、Friends API などにより Person オブジェクトを得た際には、それが持つIDは『mixi』のユーザIDとなります。

この変更についての影響

既に開発や公開されているmixiアプリについて、makeRequest などで外部サーバと通信を行い、そのmixiアプリを使ったユーザIDを使って何らかのデータベースを構築していた場合には、そのデータベース内のユーザIDは古い仕様のものとなります。また、今までのユーザIDでリクエストした際に、友人情報などを取得すると新しいIDで返ってくるため、やはりデータベース内の情報と不整合(例:同一のアカウントが二つのアカウントとして認識される)がおきる可能性があります。

PROFILE_DETAILS に関する仕様変更

Person & Friends API に関して、PROFILE_DETAILS に対応いたします。

現状

mixiアプリの現状でのサポート範囲として、特に何も指定しなくても、あるユーザの情報は全て API にて得ることが可能です。

var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER), "viewer");
req.send(function(data) {
  var viewer = data.get("viewer").getData();
  //
  var id = viewer.getId();
  var displayName = viewer.getDisplayName();
  var thumbnailUrl = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL);
  var profileUrl = viewer.getField(opensocial.Person.Field.PROFILE_URL);
  var address = viewer.getField(opensocial.Person.Field.ADDRESSES)[0].getField(opensocial.Address.Field.UNSTRUCTURED);
  var name = viewer.getField(opensocial.Person.Field.NAME).getField(opensocial.Name.Field.UNSTRUCTURED);
  var nickName = viewer.getField(opensocial.Person.Field.NICKNAME);
  var gender = viewer.getField(opensocial.Person.Field.GENDER).getDisplayValue();
  var boodType = viewer.getField(mixi.PersonField.BLOOD_TYPE);
});
変更後

PROFILE_DETAILS を使用せず、上記のリクエストのままの場合、取得される情報は「ID, NAME, THUMBNAIL_URL」の3つのみとなります。

var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER), "viewer");
req.send(function(data) {
  var viewer = data.get("viewer").getData();
  //
  var id = viewer.getId();
  var displayName = viewer.getDisplayName();
  var thumbnailUrl = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL);
});

その他の情報を取得したい場合は、以下のように明示的に PROFILE_DETAILS にて取得項目を指定する必要があります。

var p = {};
p[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] = [
  opensocial.Person.Field.PROFILE_URL,
  opensocial.Person.Field.ADDRESSES,
  opensocial.Person.Field.GENDER,
  mixi.PersonField.BLOOD_TYPE
];
var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER, p), "viewer");
req.send(function(data) {
  var viewer = data.get("viewer").getData();
  //
  var id = viewer.getId();
  var displayName = viewer.getDisplayName();
  var thumbnailUrl = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL);
  var profileUrl = viewer.getField(opensocial.Person.Field.PROFILE_URL);
  var address = viewer.getField(opensocial.Person.Field.ADDRESSES)[0].getField(opensocial.Address.Field.UNSTRUCTURED);
  var name = viewer.getField(opensocial.Person.Field.NAME).getField(opensocial.Name.Field.UNSTRUCTURED);
  var nickName = viewer.getField(opensocial.Person.Field.NICKNAME);
  var gender = viewer.getField(opensocial.Person.Field.GENDER).getDisplayValue();
  var boodType = viewer.getField(mixi.PersonField.BLOOD_TYPE);
});
この変更についての影響

現状では PROFILE_DETAILS を使用せずにすべてのプロフィール情報が得られていましたが、本仕様変更後では、「ID, NAME, THUMBNAIL_URL」以外の項目が PROFILE_DETAILS 未指定の場合では取得できなくなるため、mixiアプリによっては動作しなくなる、もしくはエラーが発生することになります。そのため、既に開発されたmixiアプリにつきましては、本仕様変更適用前までに、PROFILE_DETAILS を使用したコードに変更をお願いいたします。

このページの上部へ