ニュース » 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 を使用したコードに変更をお願いいたします。