Home > OpenSocial Archive

OpenSocial Archive

OpenSocial Mixiアプリ カウント・アップンダウン

OpenSocialのアプリが創りたい

てことで創りました。

こんなアプリです。

カウントアップ、またはカウントダウンするアプリです。
〜から何日たちました、〜まであと何日です、を計算してくれます。

イベントまでの日にちや、受付開始日までの日にちなど些細な事や
三日坊主になりがちなことなどどのくらい続いているか、日数で把握したい場合役に立ちます。

カウントを意識して数字に強くなりましょう。

よかったら見てみて下さい
http://platform001.mixi.jp/view_appli.pl?id=4887

ではでは

OpenSocial Mixiアプリ どこ行く!?

OpenSocialのアプリが作りたい!

てことで創りました。

こんなアプリです。

どこ行く!?β版

どこ行く!?はお友達とお出かけする場所を提案するサービスです。
全国津々浦々のイベント情報はもちろん、テレビ、DVD、その他キャンペーンの情報をお届けします。

友達と、恋人と、家族とどこに行こうと悩んだとき、きっとどこ行く!?が役に立つでしょう。

お友達の住所を参考にして、お出かけ先を提案しているので、お友達にはきっとうれしい提案かもしれません。

このアプリを利用してマイミクシィのお友達とお出かけしてみてはいかがでしょうか。

提案は、無数の組み合わせから毎回違う提案をしています。お好きな提案を選んでください。

よろしかったら見てみて下さい。

http://platform001.mixi.jp/view_appli.pl?id=4215

ではでは。

OpenSocial Mixiアプリ ともだち情報取得

パーミッションの問題ではまりました。

ともだち(マイミク)情報を取得する例は以下のデベロッパーサイトにありますが、
http://developer.mixi.co.jp/appli/pc/lets_enjoy_making_mixiapp/get_mymixi_info
ともだち情報を取得するときに、なぜか住所の情報がとれないなぁ、と首をかしげていたんですけど。

その理由が分かりました。やはり下記のサイトには感謝です。
http://devlog.agektmr.com/archives/512
つまり住所の情報がとれない理由は、

プロフィール情報には大きく2つに分けられます。
基本情報(id, profileUrl, thumbnailUrl, nickname)と個人情報(その他のプロフィール)と分けて呼んでいます

で、住所は個人情報に含まれるんですけど、個人情報を取得する際のルール。

これらを踏まえて、各種情報をやり取りする際に必要となるのが下記の基本ルールになります。

* 個人情報を取得する場合、対象となるユーザー(オブジェクト)が同じガジェットをインストールしていること
* オブジェクトが友達の場合、ガジェットをインストールしていなくても基本情報のみ取得可能
* 更新・削除はビューアーが自分のデータを操作する場合のみ可能

ミソは、

* 友達でもガジェットをインストールしていない人の個人情報は取得できない
* 友達じゃなくてもガジェットをインストールしていれば個人情報が取得できる

ところ。

これが理由でしたね。

この情報を分かり易く丁寧に説明してくれているえーじさんという方、大変ありがとうございます。

ともだち情報を取得するソースを載せておきます。

<?xml version="1.0" encoding="UTF-8"?>
<Module>
  <ModulePrefs title="Rss sample1" description="rss sampl">
    <Require feature="opensocial-0.8" />
  </ModulePrefs>
<Content type="html"><![CDATA[

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>

<script type="text/javascript">
jq$ = jQuery.noConflict();

function initialize() {
 getViewerFriends();
}

function getViewerFriends() {
  var req = opensocial.newDataRequest();
  var _owner_friends = {};
  _owner_friends[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER;
  _owner_friends[opensocial.IdSpec.Field.GROUP_ID] = "FRIENDS";
  //_owner_friends[opensocial.IdSpec.Field.GROUP_ID] = opensocial.IdSpec.GroupId.FRIENDS;
  var owner_friends = opensocial.newIdSpec(_owner_friends);
  var params = {};
  params[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] = [
    opensocial.Person.Field.PROFILE_URL,
    opensocial.Person.Field.ADDRESSES,
    opensocial.Person.Field.AGE,
    opensocial.Person.Field.DATE_OF_BIRTH,
    opensocial.Person.Field.GENDER,
    opensocial.Person.Field.HAS_APP,
    mixi.PersonField.BLOOD_TYPE
  ];
  req.add(req.newFetchPeopleRequest(owner_friends, params), 'owner_friends');
  req.send(function(data) {
    var owner_friends = data.get("owner_friends").getData();
    owner_friends.each(function(friend) {
      id = friend.getId();
      nickname = friend.getDisplayName();
      thumbnailUrl = friend.getField(opensocial.Person.Field.THUMBNAIL_URL);
      profileUrl = friend.getField(opensocial.Person.Field.PROFILE_URL);
      (friend.getField(opensocial.Person.Field.ADDRESSES) ) ? pref = friend.getField(opensocial.Person.Field.ADDRESSES).unstructured_address : pref = null;
      //pref = friend.getField(opensocial.Person.Field.ADDRESSES)[0].getField(opensocial.Address.Field.UNSTRUCTURED_ADDRESS);
      age = friend.getField(opensocial.Person.Field.AGE);
      birth = friend.getField(opensocial.Person.Field.DATE_OF_BIRTH);
      (friend.getField(opensocial.Person.Field.GENDER) ) ? gender = friend.getField(opensocial.Person.Field.GENDER).getKey() : gender = null;
      hasApp = friend.getField(opensocial.Person.Field.HAS_APP);
      bloodType = friend.getField(mixi.PersonField.BLOOD_TYPE);

      jq$("#friends").append("id:" + id + " nickname:" + nickname + " thumbnailUrl: <img src='" + thumbnailUrl + "'>" +
         " profileUrl :<a href='" + profileUrl + "' >URL</a>" + " pref:" + pref + " age:" + age + " birth:" + birth
         + "<br />");
    });
  });
}

function init() {
  initialize();
}

gadgets.util.registerOnLoadHandler(init);
</script>

<div>
  <ul id="friends"></ul>
</div>

  ]]></Content>
</Module>

オーナーとビューアーという概念もあるので気をつけて下さい。

gooにはパーミッションに関して詳しく掲載してくれてますね。
http://developer.home.goo.ne.jp/document/%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%A2%E3%83%87%E3%83%AB
開発者のためにOpenSocialの詳細な情報を載せてくれるgooにはささやかながら応援します。

あと、個人情報でも公開設定で公開していなければ取得できませんので。
参考になるかもしれない質疑応答です。
http://home.goo.ne.jp/community/5613/bbs/list/b0L7L73iH1Wn

ではでは

OpenSocial 外部サーバからXMLを読み込む処理

表題のことをやるのに時間がかかってしまいました。
簡単だと思ったのにな。

参考にしてたサイトは以下です。
mixi developer サイト
http://developer.mixi.co.jp/appli/pc/lets_enjoy_making_mixiapp/require_servers
下記サイトは脱帽します。翻訳作業に感謝です。
http://devlog.agektmr.com/wiki/index.php?OpenSocial%2FOpenSocial%20API%20Developer%27s%20Guide%20(v0.7)

現在Mixiアプリを開発しているんですけどOpenSocial機能はまだ不安定なのかもしれません。
アプリを追加した初期動作はCanvasビューでエラーがおこって何も表示されなかったのに、
その後数時間経って見てみたら表示されるようになってました。その間何もイジリーしてないです。
不思議でした。

で、ブログのフィードを取得しようとコーディングしてたんですが、なぜか出来ない。
また時間が経ってみると、あれ、取得できてる。不思議。キャッシュも削除するようにnocache=1をURLにつけて開発してたんだけどな。まぁ、いいやと。

本題で、取得したいWebapiがあってMixiディベロッパーの参考どおりに処理してたんですけど、取得は出来てもパースするときに失敗しちゃってたんですよね。

Mixiさん側でパースの割当作業も全部やっていると思ったんですけど違うんですね。
ということで、JQueryを使用してパースしました。
以下がそのコードです。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
<script type="text/javascript">
//コンフリクトしないように
jq$ = jQuery.noConflict();

var url = "http://hogehoge.URL";
function load() {
  var params = {};
  params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.DOM;
  params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.NONE
  gadgets.io.makeRequest(this.url, function(response) {
    var feed = response.data;
    //feedの中のItemというノードを探してItemノード分イテレータでまわす
    jq$(feed).find("Item").each(function()
    {
      jq$("#entries").append(jq$(this).find("Title").text() + "<br />");
    });
  }, params);
}

gadgets.util.registerOnLoadHandler(load);
</script>

<ul id="entries"></ul>

JQueryのパースは下記サイトを参考にさせて頂きました。
http://digitechlog.com/2009/01/15/how-to-parse-xml-in-jquery-with-sample-source-code.html
コードがかなりきれいになりました。ありがとうございます。

以上になります。

ではでは。

Home > OpenSocial Archive

Search
Feeds
Meta

Return to page top