最近,mixiアプリの開発に手を出してみました.
で,Mixi Developer Centerにある説明を読みながら,実際に動かしながら遊んでいます.が,ちょっと詰まってしまったので,メモ代わりに書いておきます.
ユーザの情報を取得する方法として,下記のコードが紹介されているのですが,これでは動きません.
req.send(function(data) { var viewer = data.get("viewer").getData(); var id = viewer.getId(); var nickname = viewer.getDisplayName(); var thumbnailUrl = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL); var profileUrl = viewer.getField(opensocial.Person.Field.PROFILE_URL); var pref = viewer.getField(opensocial.Person.Field.ADDRESSES)[0].getField(opensocial.Address.Field.UNSTRUCTURED_ADDRESS); var age = viewer.getField(opensocial.Person.Field.AGE); var birth = viewer.getField(opensocial.Person.Field.DATE_OF_BIRTH); var gender = viewer.getField(opensocial.Person.Field.GENDER).getKey(); var hasApp = viewer.getField(opensocial.Person.Field.HAS_APP); var bloodType = viewer.getField(mixi.PersonField.BLOOD_TYPE); // プロフィール情報を使った処理 }
何が問題かというと,この部分.
var pref = viewer.getField(opensocial.Person.Field.ADDRESSES)[0].getField(opensocial.Address.Field.UNSTRUCTURED_ADDRESS);
これでは,ユーザの住所が取得できませんでした.
ユーザの住所を取得するためには,こうする必要があるみたい.
var pref = viewer.getField(opensocial.Person.Field.ADDRESSES)["unstructured_address"]
また,他に注意すべき個所として,私が動かしていた感じだと,下記のコードはString型が返ってくるわけではないみたいです.(ちゃんと確認したわけではないんですが,動かなかったので.)
var birth = viewer.getField(opensocial.Person.Field.DATE_OF_BIRTH);
なので,文字列として扱いときはこんな感じにする必要があります.
var birth = viewer.getField(opensocial.Person.Field.DATE_OF_BIRTH).toString()
以上,細かい点ですし,JavaScript経験者ならすぐにわかることなんですが,もし私と同じような状況で悩んでいる人が居れば,参考になれば幸い.