マイミク情報の表示

んー,2 回に分けようかな。まずは owner か viewer の情報取得。

まず mixi が対応している形式を調べてみます。「Open Frame in New Tab」しておくと Firebug から JavaScript 流し込めて便利ですね!

for (x in opensocial.Person.Field) {
  console.log(x);
}

for (x in mixi.PersonField) {
  console.log(x);
}

と,いうことなので全部取得する request を作ってみます。

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs title="HelloWorld" author_email="hi_c_mayu@hotmail.co.jp">
    <Require feature="opensocial-0.8" />
  </ModulePrefs>
  <Content type="html" view="canvas"><![CDATA[
    <script type="text/javascript">
    var params = {}
    params[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] = [
      opensocial.Person.Field.ID,
      opensocial.Person.Field.NAME,
      opensocial.Person.Field.NICKNAME,
      opensocial.Person.Field.THUMBNAIL_URL,
      opensocial.Person.Field.PROFILE_URL,
      opensocial.Person.Field.CURRENT_LOCATION,
      opensocial.Person.Field.ADDRESSES,
      opensocial.Person.Field.EMAILS,
      opensocial.Person.Field.PHONE_NUMBERS,
      opensocial.Person.Field.ABOUT_ME,
      opensocial.Person.Field.STATUS,
      opensocial.Person.Field.PROFILE_SONG,
      opensocial.Person.Field.PROFILE_VIDEO,
      opensocial.Person.Field.GENDER,
      opensocial.Person.Field.SEXUAL_ORIENTATION,
      opensocial.Person.Field.RELATIONSHIP_STATUS,
      opensocial.Person.Field.AGE,
      opensocial.Person.Field.DATE_OF_BIRTH,
      opensocial.Person.Field.BODY_TYPE,
      opensocial.Person.Field.ETHNICITY,
      opensocial.Person.Field.SMOKER,
      opensocial.Person.Field.DRINKER,
      opensocial.Person.Field.CHILDREN,
      opensocial.Person.Field.PETS,
      opensocial.Person.Field.LIVING_ARRANGEMENT,
      opensocial.Person.Field.TIME_ZONE,
      opensocial.Person.Field.LANGUAGES_SPOKEN,
      opensocial.Person.Field.JOBS,
      opensocial.Person.Field.JOB_INTERESTS,
      opensocial.Person.Field.SCHOOLS,
      opensocial.Person.Field.INTERESTS,
      opensocial.Person.Field.URLS,
      opensocial.Person.Field.MUSIC,
      opensocial.Person.Field.MOVIES,
      opensocial.Person.Field.TV_SHOWS,
      opensocial.Person.Field.BOOKS,
      opensocial.Person.Field.ACTIVITIES,
      opensocial.Person.Field.SPORTS,
      opensocial.Person.Field.HEROES,
      opensocial.Person.Field.QUOTES,
      opensocial.Person.Field.CARS,
      opensocial.Person.Field.FOOD,
      opensocial.Person.Field.TURN_ONS,
      opensocial.Person.Field.TURN_OFFS,
      opensocial.Person.Field.TAGS,
      opensocial.Person.Field.ROMANCE,
      opensocial.Person.Field.SCARED_OF,
      opensocial.Person.Field.HAPPIEST_WHEN,
      opensocial.Person.Field.FASHION,
      opensocial.Person.Field.HUMOR,
      opensocial.Person.Field.LOOKING_FOR,
      opensocial.Person.Field.RELIGION,
      opensocial.Person.Field.POLITICAL_VIEWS,
      opensocial.Person.Field.HAS_APP,
      opensocial.Person.Field.NETWORK_PRESENCE,
      mixi.PersonField.BLOOD_TYPE
    ];
    var req = opensocial.newDataRequest();
    req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER, params), "viewer");
    req.send(function(data) {
      if (data.hadError()) {
        var msg = data.getErrorMessage();
        alert(msg);
      } else {
        var item = data.get("viewer");
        if (item.hadError()) {
          var code = item.getErrorCode();
          var msg = item.getErrorMessage();
          alert(code + " : " + msg);
        } else {
          var viewer = item.getData();
          document.getElementById("display_ID").innerHTML = viewer.getField(opensocial.Person.Field.ID);
          document.getElementById("display_NAME").innerHTML = viewer.getField(opensocial.Person.Field.NAME);
          document.getElementById("display_NICKNAME").innerHTML = viewer.getField(opensocial.Person.Field.NICKNAME);
          document.getElementById("display_THUMBNAIL_URL").innerHTML = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL);
          document.getElementById("display_PROFILE_URL").innerHTML = viewer.getField(opensocial.Person.Field.PROFILE_URL);
          document.getElementById("display_CURRENT_LOCATION").innerHTML = viewer.getField(opensocial.Person.Field.CURRENT_LOCATION);
          document.getElementById("display_ADDRESSES").innerHTML = viewer.getField(opensocial.Person.Field.ADDRESSES);
          document.getElementById("display_EMAILS").innerHTML = viewer.getField(opensocial.Person.Field.EMAILS);
          document.getElementById("display_PHONE_NUMBERS").innerHTML = viewer.getField(opensocial.Person.Field.PHONE_NUMBERS);
          document.getElementById("display_ABOUT_ME").innerHTML = viewer.getField(opensocial.Person.Field.ABOUT_ME);
          document.getElementById("display_STATUS").innerHTML = viewer.getField(opensocial.Person.Field.STATUS);
          document.getElementById("display_PROFILE_SONG").innerHTML = viewer.getField(opensocial.Person.Field.PROFILE_SONG);
          document.getElementById("display_PROFILE_VIDEO").innerHTML = viewer.getField(opensocial.Person.Field.PROFILE_VIDEO);
          document.getElementById("display_GENDER").innerHTML = viewer.getField(opensocial.Person.Field.GENDER);
          document.getElementById("display_SEXUAL_ORIENTATION").innerHTML = viewer.getField(opensocial.Person.Field.SEXUAL_ORIENTATION);
          document.getElementById("display_RELATIONSHIP_STATUS").innerHTML = viewer.getField(opensocial.Person.Field.RELATIONSHIP_STATUS);
          document.getElementById("display_AGE").innerHTML = viewer.getField(opensocial.Person.Field.AGE);
          document.getElementById("display_DATE_OF_BIRTH").innerHTML = viewer.getField(opensocial.Person.Field.DATE_OF_BIRTH);
          document.getElementById("display_BODY_TYPE").innerHTML = viewer.getField(opensocial.Person.Field.BODY_TYPE);
          document.getElementById("display_ETHNICITY").innerHTML = viewer.getField(opensocial.Person.Field.ETHNICITY);
          document.getElementById("display_SMOKER").innerHTML = viewer.getField(opensocial.Person.Field.SMOKER);
          document.getElementById("display_DRINKER").innerHTML = viewer.getField(opensocial.Person.Field.DRINKER);
          document.getElementById("display_CHILDREN").innerHTML = viewer.getField(opensocial.Person.Field.CHILDREN);
          document.getElementById("display_PETS").innerHTML = viewer.getField(opensocial.Person.Field.PETS);
          document.getElementById("display_LIVING_ARRANGEMENT").innerHTML = viewer.getField(opensocial.Person.Field.LIVING_ARRANGEMENT);
          document.getElementById("display_TIME_ZONE").innerHTML = viewer.getField(opensocial.Person.Field.TIME_ZONE);
          document.getElementById("display_LANGUAGES_SPOKEN").innerHTML = viewer.getField(opensocial.Person.Field.LANGUAGES_SPOKEN);
          document.getElementById("display_JOBS").innerHTML = viewer.getField(opensocial.Person.Field.JOBS);
          document.getElementById("display_JOB_INTERESTS").innerHTML = viewer.getField(opensocial.Person.Field.JOB_INTERESTS);
          document.getElementById("display_SCHOOLS").innerHTML = viewer.getField(opensocial.Person.Field.SCHOOLS);
          document.getElementById("display_INTERESTS").innerHTML = viewer.getField(opensocial.Person.Field.INTERESTS);
          document.getElementById("display_URLS").innerHTML = viewer.getField(opensocial.Person.Field.URLS);
          document.getElementById("display_MUSIC").innerHTML = viewer.getField(opensocial.Person.Field.MUSIC);
          document.getElementById("display_MOVIES").innerHTML = viewer.getField(opensocial.Person.Field.MOVIES);
          document.getElementById("display_TV_SHOWS").innerHTML = viewer.getField(opensocial.Person.Field.TV_SHOWS);
          document.getElementById("display_BOOKS").innerHTML = viewer.getField(opensocial.Person.Field.BOOKS);
          document.getElementById("display_ACTIVITIES").innerHTML = viewer.getField(opensocial.Person.Field.ACTIVITIES);
          document.getElementById("display_SPORTS").innerHTML = viewer.getField(opensocial.Person.Field.SPORTS);
          document.getElementById("display_HEROES").innerHTML = viewer.getField(opensocial.Person.Field.HEROES);
          document.getElementById("display_QUOTES").innerHTML = viewer.getField(opensocial.Person.Field.QUOTES);
          document.getElementById("display_CARS").innerHTML = viewer.getField(opensocial.Person.Field.CARS);
          document.getElementById("display_FOOD").innerHTML = viewer.getField(opensocial.Person.Field.FOOD);
          document.getElementById("display_TURN_ONS").innerHTML = viewer.getField(opensocial.Person.Field.TURN_ONS);
          document.getElementById("display_TURN_OFFS").innerHTML = viewer.getField(opensocial.Person.Field.TURN_OFFS);
          document.getElementById("display_TAGS").innerHTML = viewer.getField(opensocial.Person.Field.TAGS);
          document.getElementById("display_ROMANCE").innerHTML = viewer.getField(opensocial.Person.Field.ROMANCE);
          document.getElementById("display_SCARED_OF").innerHTML = viewer.getField(opensocial.Person.Field.SCARED_OF);
          document.getElementById("display_HAPPIEST_WHEN").innerHTML = viewer.getField(opensocial.Person.Field.HAPPIEST_WHEN);
          document.getElementById("display_FASHION").innerHTML = viewer.getField(opensocial.Person.Field.FASHION);
          document.getElementById("display_HUMOR").innerHTML = viewer.getField(opensocial.Person.Field.HUMOR);
          document.getElementById("display_LOOKING_FOR").innerHTML = viewer.getField(opensocial.Person.Field.LOOKING_FOR);
          document.getElementById("display_RELIGION").innerHTML = viewer.getField(opensocial.Person.Field.RELIGION);
          document.getElementById("display_POLITICAL_VIEWS").innerHTML = viewer.getField(opensocial.Person.Field.POLITICAL_VIEWS);
          document.getElementById("display_HAS_APP").innerHTML = viewer.getField(opensocial.Person.Field.HAS_APP);
          document.getElementById("display_NETWORK_PRESENCE").innerHTML = viewer.getField(opensocial.Person.Field.NETWORK_PRESENCE);
          document.getElementById("display_BLOOD_TYPE").innerHTML = viewer.getField(mixi.PersonField.BLOOD_TYPE);
        }
      }
    });
    </script>
    <div id="container">
      <div>opensocial.Person.Field.ID = <span id="display_ID"></span></div>
      <div>opensocial.Person.Field.NAME = <span id="display_NAME"></span></div>
      <div>opensocial.Person.Field.NICKNAME = <span id="display_NICKNAME"></span></div>
      <div>opensocial.Person.Field.THUMBNAIL_URL = <span id="display_THUMBNAIL_URL"></span></div>
      <div>opensocial.Person.Field.PROFILE_URL = <span id="display_PROFILE_URL"></span></div>
      <div>opensocial.Person.Field.CURRENT_LOCATION = <span id="display_CURRENT_LOCATION"></span></div>
      <div>opensocial.Person.Field.ADDRESSES = <span id="display_ADDRESSES"></span></div>
      <div>opensocial.Person.Field.EMAILS = <span id="display_EMAILS"></span></div>
      <div>opensocial.Person.Field.PHONE_NUMBERS = <span id="display_PHONE_NUMBERS"></span></div>
      <div>opensocial.Person.Field.ABOUT_ME = <span id="display_ABOUT_ME"></span></div>
      <div>opensocial.Person.Field.STATUS = <span id="display_STATUS"></span></div>
      <div>opensocial.Person.Field.PROFILE_SONG = <span id="display_PROFILE_SONG"></span></div>
      <div>opensocial.Person.Field.PROFILE_VIDEO = <span id="display_PROFILE_VIDEO"></span></div>
      <div>opensocial.Person.Field.GENDER = <span id="display_GENDER"></span></div>
      <div>opensocial.Person.Field.SEXUAL_ORIENTATION = <span id="display_SEXUAL_ORIENTATION"></span></div>
      <div>opensocial.Person.Field.RELATIONSHIP_STATUS = <span id="display_RELATIONSHIP_STATUS"></span></div>
      <div>opensocial.Person.Field.AGE = <span id="display_AGE"></span></div>
      <div>opensocial.Person.Field.DATE_OF_BIRTH = <span id="display_DATE_OF_BIRTH"></span></div>
      <div>opensocial.Person.Field.BODY_TYPE = <span id="display_BODY_TYPE"></span></div>
      <div>opensocial.Person.Field.ETHNICITY = <span id="display_ETHNICITY"></span></div>
      <div>opensocial.Person.Field.SMOKER = <span id="display_SMOKER"></span></div>
      <div>opensocial.Person.Field.DRINKER = <span id="display_DRINKER"></span></div>
      <div>opensocial.Person.Field.CHILDREN = <span id="display_CHILDREN"></span></div>
      <div>opensocial.Person.Field.PETS = <span id="display_PETS"></span></div>
      <div>opensocial.Person.Field.LIVING_ARRANGEMENT = <span id="display_LIVING_ARRANGEMENT"></span></div>
      <div>opensocial.Person.Field.TIME_ZONE = <span id="display_TIME_ZONE"></span></div>
      <div>opensocial.Person.Field.LANGUAGES_SPOKEN = <span id="display_LANGUAGES_SPOKEN"></span></div>
      <div>opensocial.Person.Field.JOBS = <span id="display_JOBS"></span></div>
      <div>opensocial.Person.Field.JOB_INTERESTS = <span id="display_JOB_INTERESTS"></span></div>
      <div>opensocial.Person.Field.SCHOOLS = <span id="display_SCHOOLS"></span></div>
      <div>opensocial.Person.Field.INTERESTS = <span id="display_INTERESTS"></span></div>
      <div>opensocial.Person.Field.URLS = <span id="display_URLS"></span></div>
      <div>opensocial.Person.Field.MUSIC = <span id="display_MUSIC"></span></div>
      <div>opensocial.Person.Field.MOVIES = <span id="display_MOVIES"></span></div>
      <div>opensocial.Person.Field.TV_SHOWS = <span id="display_TV_SHOWS"></span></div>
      <div>opensocial.Person.Field.BOOKS = <span id="display_BOOKS"></span></div>
      <div>opensocial.Person.Field.ACTIVITIES = <span id="display_ACTIVITIES"></span></div>
      <div>opensocial.Person.Field.SPORTS = <span id="display_SPORTS"></span></div>
      <div>opensocial.Person.Field.HEROES = <span id="display_HEROES"></span></div>
      <div>opensocial.Person.Field.QUOTES = <span id="display_QUOTES"></span></div>
      <div>opensocial.Person.Field.CARS = <span id="display_CARS"></span></div>
      <div>opensocial.Person.Field.FOOD = <span id="display_FOOD"></span></div>
      <div>opensocial.Person.Field.TURN_ONS = <span id="display_TURN_ONS"></span></div>
      <div>opensocial.Person.Field.TURN_OFFS = <span id="display_TURN_OFFS"></span></div>
      <div>opensocial.Person.Field.TAGS = <span id="display_TAGS"></span></div>
      <div>opensocial.Person.Field.ROMANCE = <span id="display_ROMANCE"></span></div>
      <div>opensocial.Person.Field.SCARED_OF = <span id="display_SCARED_OF"></span></div>
      <div>opensocial.Person.Field.HAPPIEST_WHEN = <span id="display_HAPPIEST_WHEN"></span></div>
      <div>opensocial.Person.Field.FASHION = <span id="display_FASHION"></span></div>
      <div>opensocial.Person.Field.HUMOR = <span id="display_HUMOR"></span></div>
      <div>opensocial.Person.Field.LOOKING_FOR = <span id="display_LOOKING_FOR"></span></div>
      <div>opensocial.Person.Field.RELIGION = <span id="display_RELIGION"></span></div>
      <div>opensocial.Person.Field.POLITICAL_VIEWS = <span id="display_POLITICAL_VIEWS"></span></div>
      <div>opensocial.Person.Field.HAS_APP = <span id="display_HAS_APP"></span></div>
      <div>opensocial.Person.Field.NETWORK_PRESENCE = <span id="display_NETWORK_PRESENCE"></span></div>
      <div>mixi.PersonField.BLOOD_TYPE = <span id="display_BLOOD_TYPE></span></div>
    </div>
  ]]></Content>
  <Content type="html" view="home"><![CDATA[
    Home view.
  ]]></Content>
  <Content type="html" view="profile"><![CDATA[
    Profile view.
  ]]></Content>
  <Content type="html" view="preview"><![CDATA[
    Preview view.
  ]]></Content>
  <Content type="html"><![CDATA[
    Other view.
  ]]></Content>
</Module>

にゃははw 我ながら酷いコードですねーw

ほとんど取れないんですね。

今のところ,viewer で取れるのは

みたいです。
あれ,現住所って取れるんじゃなかったっけなぁ。私の公開範囲の問題?

2009/07/01 03:21:38 追記。
公開範囲をすべて「全体まで公開」にしたところ,

も取れました。公開範囲が「全体に公開」のものだけ取得出来るんですねー。

  • ID
  • ニックネーム
  • プロフィール写真
  • プロフィールURL
  • 現住所(県のみ)
  • 年齢
  • 生年月日
  • 性別
  • 血液型
http://developer.mixi.co.jp/appli/pc/lets_enjoy_making_mixiapp/get_mymixi_info

はそれぞれ

ID opensocial.Person.Field.ID
ニックネーム opensocial.Person.Field.NICKNAME
プロフィール写真 opensocial.Person.Field.THUMBNAIL_URL
プロフィールURL opensocial.Person.Field.PROFILE_URL
現住所(県のみ) opensocial.Person.Field.ADDRESSES
年齢 opensocial.Person.Field.AGE
生年月日 opensocial.Person.Field.DATE_OF_BIRTH
性別 opensocial.Person.Field.GENDER
血液型 mixi.PersonField.BLOOD_TYPE

で,いいかな?
あれ。opensocial.Person.Field.NAME の中って何が入ってるんだろう。

ってうわもう 3 時半だ。一つ一つ調べながらだと思ったより時間かかりますね……。続きはまた明日(*´-ω-)


2009/07/02 20:57:09 追記。
すみません,script タグの中身をコメントアウトしてました。まさかはてな記法でもコメントアウトが動いちゃうとは……。やりづらいです(;_;)