blog.kur.jp

バイオリンと山、自転車をこよなく愛するkurのチラシの裏。たまには技術的なことを書いたりするかも知れません。

mixiアプリ始めました&さっそく詰まりました

最近,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経験者ならすぐにわかることなんですが,もし私と同じような状況で悩んでいる人が居れば,参考になれば幸い.