totoBIGが当然のように外れたのでテンションは低めですが、前回に引き続き「OpneSocial」のAPIの勉強をしたいと思います。 mixiアプリの大本営も参考にしていきます。
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アプリ起動時に動きを変化させる、などの工夫を行うことができます。