mixiアプリ » 技術仕様(Graph API方式) » スマートフォン » アクティビティの送信について
アクティビティの送信について
アプリ内でのユーザの行動を友人に対して通知するためのAPIをアクティビティAPIと呼びます。ここではアクティビティAPIの利用方法について紹介します。
アクティビティAPI利用の事前準備
アクティビティAPIを利用するには、以下の事前準備をしておく必要があります。
- JavaScript API で提供されていますので、JavaScript API の利用準備を行っておく必要があります
-
利用には mixi_apps2 スコープのユーザ認可を取得しておく必要があります
ユーザ認可の方法についてはユーザ認可についてをご参照ください
コミュニケーションフィードの送信
実際のコミュニケーションフィード送信は、以下の手順に従って行います。
- アクティビティの情報を持つopensocial.Activityオブジェクトを生成する。
- opensocial.requestCreateActivity()関数を使って、アクティビティの作成をサーバに依頼する。
次に、コミュニケーションフィードを送信するためのサンプルコードを以下に示します。
var params = {}; params[opensocial.Activity.Field.TITLE] = "Hello!"; var activity = opensocial.newActivity(params); opensocial.requestCreateActivity( activity, opensocial.CreateActivityPriority.HIGH, function(response) { if (response.hadError()) { var code = response.getErrorCode(); // do something... } else { // do something... } });
上記は、文字列のみを持つシンプルなActivityオブジェクトを作成する例です。アクティビティの文字列はopensocial.Activity.Field.TITLEにて指定します(アクティビティの文字列は、255文字までが有効になります。256文字目以降は切り捨てられますので、ご注意ください)。
そして、作成されたActivity オブジェクトの内容を元に、opensocial.requestCreateActivity()関数を使ってアクティビティの作成と公開をサーバに依頼します。
requestCreateActivity()関数の第1引数には、先ほど生成したActivityオブジェクトを指定します。第2引数には、opensocial.CreateActivityPriority.HIGHを指定します。第3引数は、アクティビティの公開処理が終了した後に呼び出されるコールバック関数を指定します。
コールバック関数の引数として、 opensocial.ResponseItemオブジェクトが指定されます。このオブジェクトのhadError()関数を使って、アクティビティが正常に作成および公開されたかどうかを確認するようにしましょう。エラーが発生した場合にはgetErrorCode()関数でエラーコードを取得することができます。以下に発生する可能性のあるエラーコードを示します。
エラーコード | 発生する状況 |
---|---|
400 | パラメータが不正 |
401 | mixi_apps2スコープのユーザ認可を取得していない |
403 | ユーザがキャンセルした |
500 | mixiサーバでの内部エラー |
コミュニケーションフィードの投稿を行うためのAPIを呼び出すと、そのまま投稿されるのではなく、ユーザに投稿してよいかどうかを問い合わせるダイアログが表示されます。ここでユーザが許可を行った場合にのみ、コミュニケーションフィードが投稿されます。
また、画像を伴うアクティビティも作成可能です。その場合は、opensocial.MediaItemオブジェクトを利用します。MediaItemオブジェクトは、opensocial.newMediaItem()関数を使って生成することができ、MIME Typeと画像のURL、そして画像を示すパラメータを引数として渡します。MediaItemオブジェクトは、opensocial.Activity.Field.MEDIA_ITEMSフィールドとして配列で指定します。mixiアプリでは、3個までMediaItemオブジェクトを配列に指定することが可能です。
以下は、MediaItem付きのコミュニケーションフィードを送信するサンプルです。
var mediaItem = opensocial.newMediaItem("image/gif", "http://your.server.host/image.gif"); var params = {}; params[opensocial.Activity.Field.TITLE] = "Hello with Media!"; params[opensocial.Activity.Field.MEDIA_ITEMS] = [mediaItem]; var activity = opensocial.newActivity(params);
また、アプリ起動時のパラメータを渡すこともできます。パラメータを指定できることで、特定のアクティビティからのアプリ起動時に動作を変えるなどの処理が可能になります。例えば、選択されたアイテムのIDとその個数をアクティビティに含めてmixiアプリ起動時にそれを受け取りたい場合には、以下のように記述します。
var data = {}; data[opensocial.Activity.Field.TITLE] = “Hello Activity”; var params = { item_id: 12345, count: 3 }; var escapedParams = encodeURIComponent(gadgets.json.stringify(params)); data[opensocial.Activity.Field.URL] = "http://mixi.jp/run_appli.pl?id=1234&appParams=" + escapedParams; var activity = opensocial.newActivity(data); opensocial.requestCreateActivity( activity, opensocial.CreateActivityPriority.HIGH, function(response) {…} );
appParamsにて指定されたパラメータは、ユーザがコミュニケーションフィードをクリックしてアプリを起動した際に、スタートURLに対してQuery String形式で渡されます。以下の例では、countとitem_idパラメータが追加されているのが分かります。
http://example.com/?count=3&item_id=12345&oauth_consumer_key=mixi.jp&oauth_nonce=0e8b549d fc89c076261f&oauth_signature=..&oauth_signature_method=RSA-SHA1&oauth_timestamp=128080741 1&oauth_version=1.0&opensocial_app_id=1234&opensocial_owner_id=xxxxx&opensocial_viewer_id =xxxxx
もし、アプリ画面ではなく、アプリ説明画面(view_appli.pl)に遷移させたい場合は、上記のURL内の“run_appli.pl”の部分を“view_appli.pl”に変更してください。
URLとして、http://mixi.jp/ 以外のサイトや、view_appli.plおよびrun_appli.pl以外の画面、異なるアプリIDの指定を行うとエラーになりますのでご注意ください。