Opensocial入門を読んで見た(第五章)二回目

totoBIGが当然のように外れたのでテンションは低めですが、前回に引き続き「OpneSocial」のAPIの勉強をしたいと思います。 mixiアプリ大本営も参考にしていきます。

OpenSocial入門 ~ソーシャルアプリケーションの実践開発 OpenSocial入門 ~ソーシャルアプリケーションの実践開発

会員情報項目の取得

[cc lang="javascript"] var = params{}; params = [opensocial.DataRequest.PeopleRequestFields]=[ opensocial.Person.Field.AGE, opensocial.Person.Field.GENDER, opensocial.Person.Field.CURRENT_LOCATION]; var req = opensocial.newDataRequset(); req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER,params),"viewer"); req.send(function(data){ var person = data.get("viewer").getData(); var age = person.getField(opensocial.Person.Field.AGE); var gender = person.getField(opensocial.Person.Field.GENDER); if(gender.getkey() == opensocial.Enum.Gender.FEMALE){ //女性だった際の処理 } else if(gender.getkey() == opensocial.Enum.Gender>MALE){ //男性だった際の処理 } else{ //性別が登録していなかった時の処理       } var address = person.getField(opensocial.Person.Field.CURRENT_LOCATION); }); [/cc]

opensocialによってあらかじめ選択肢が規定されている項目があります。上記の例で言えば「opensocial.Enum.Genderクラス」によってMALE,FEMALEとがフィールドに定義されています。 また、お気に入りなどで複数項目を設定があった場合、getField()を使った際には配列で情報を得ることができます。

opensocial.Person.Fieldクラスには様々なフィールドが用意されていますが、通常はOpensocial対応SNSによって取得に関して一定のルールが定められています。このルールのことを「パーミッションモデル」と言います。 mixiアプリにおいても対象となる情報があります。くわしくはこちら

アクティビティの作成

アクティビティとは更新情報のことです。 このアクティビティの作成と公開はOpenSocialアプリを実行している会員(VIEWER)に対して行われます。つまり作成されたアクティビティの持ち主はOpensocialアプリを実行したユーザーになります。

[cc lang="javascript"] //OpenSocial.Activityオブジェクトを作成する。 var params = {}; params = [opensocial.Activity.Field.TITLE] = "ハイスコア情報" ; params = [opensocial.Activity.Field.BODY] = "誰よりも高い点数を獲得しました。"; var activity = opensocial.newActivity(params); //アクティビティの生成をサーバーに依頼する。 opensocial.requestCreateActivity(activity , opensocial.CreateActivityPriority.LOW,function(response){ if(response.hadError()){ var code = response.getErrorcode(); var msg = response.getErrorMessage(); //エラー発生時の処理                        } else{ //アクティビティ作成完了の処理                       } }); [/cc]

opensocial.CreateActivityPriority.LOWでアクティビティの優先順位を決めていますが(HIGHかLOW)、現在のmixiアプリではこの優先度をサポートしていませんので、 opensocial.CreateActivityPriority.HIGHを指定しておけば良いでしょう。

アクティビティは文字列だけではなく、画像や動画なども設定できます。その際にはopensocial.newMediaItem()関数使います。その後にOpenSocial.Activityに追加します。

[cc lang="javascript"]

var mediaItem = opensocial.newMediaItem("image/gif" , "http://albatrus.com/image.gif/");

var params = {}; params = [opensocial.Activity.Field.TITLE] = "ハイスコア情報" ; params = [opensocial.Activity.Field.BODY] = "誰よりも高い点数を獲得しました。"; params = [opensocial.Activity.Field.MEDIA_ITEMS] = [mediaItem]; var activity = opensocial.newActivity(params); opensocial.requestCreateActivity( activity,opensocial.CreateActivityPriority.HIGH,function(response){ //アクティビティが完了した際の処理 }); [/cc]

アクティビティの遷移先の指定

アクティビティをユーザーがクリックした際に飛ぶリンク先を指定できます。その際には「opensocial.Activity.Field.URL」を使って設定します。

[cc lang="javascript"] data[opensocial.Activity.Field.URL] = "http://albatrus.com /run_appli.pl?id=" + appId + "&" + escaped; var activity = opensocial.newActivity(data); opensocial.requestCreateActivity( activity,opensocial.CreateActivityPriority.HIGH,function(response) { } ); [/cc]

これ以外に、mixiアプリは以下のカスタマイズを行うことが可能です。

  • 遷移先のページ – run_appli.pl(アプリ画面)もしくはview_appli.pl(アプリ紹介画面)
  • mixiアプリ起動時に渡したいパラメータ – appParams

パラメータを指定できることで、特定のアクティビティからのmixiアプリ起動時に動きを変化させる、などの工夫を行うことができます。