mixiアプリ » 技術仕様(Graph API方式) » PC » Firefox 22 での Cookie有効化について
Firefox 22 での Cookie有効化について
3rd Party Cookie 有効化
Firefox 22 をデフォルトの設定(※1)のまま利用して mixiアプリ PC版 新方式を閲覧すると、 Firefox はアプリが設定したCookieの値を保存しないことがあります。
例えばCookieを利用してアプリのセッション管理を行っている場合、正常に動作しない可能性があります。
下記を参考に3rd Party Cookie 有効化を行ってください。
アプリの起動時に下記の3rd Party Cookie 有効化を行うと、
それ以後ユーザが明示的にCookieの消去等を行わない限り、アプリがCookieを設定/読み出しできるようになります。
※1:Cookieの受け入れ設定が「訪問先のみ」の場合
3rd Party Cookie 有効化の方法
3rd Party Cookie 有効化は次の3つの手順で行います。
(1) mixi.cookie.enable()関数の呼び出し
(2) Cookie有効化スクリプトの実行
(3) アプリへリダイレクト
(1) mixi.cookie.enable()関数の呼び出し
3rd Party Cookieを設定できないブラウザの場合は、
まず、アプリのスタートURLで呼び出される最初の画面にて、 mixi.cookie.enable() 関数を呼び出します。
mixi.cookie.enable() 関数は JavaScript API で提供されていますので、事前に JavaScript API の利用準備 を済ませておく必要があります。
mixi.cookie.enable()関数は以下のように実行します。
mixi.cookie.enable({ url: "http://example.com/set_cookie.php", appParams: {hoge: 'fuga'} });
項目 |
内容 |
---|---|
url |
次項で設置して頂くCookie有効化スクリプトのURL |
appParams |
本APIを利用後アプリにリダイレクトする時に受け取りたいパラメータ。オブジェクト形式で指定。 |
<例> Cookie のチェック後に関数を呼び出す
mixi.cookie.enable() 関数を利用する際に、関数の呼び出しとアプリへのリダイレクトがループしないように注意する必要があります。
ページアプリ内部で Cookie の書き込みを行った後に呼び出されるページは
次の様に Cookie の存在確認をすることで必要な場合のみ mixi.cookie.enable() 関数を呼び出すことができます。
(function () { if (window.navigator.cookieEnabled && !document.cookie) { mixi.cookie.enable({ url: "http://example.com/set_cookie.php", appParams: {hoge: 'fuga'} }); } })();
(2) Cookie有効化スクリプトの実行
mixi.cookie.enable() 関数が実行されると、urlで指定したCookie有効化スクリプトがGETで呼び出されます。
Cookie 有効化スクリプトには下記の処理を含め、アプリのドメイン配下に設置します。
- 署名付きリクエストの検証
- Cookie をセットする処理
- GET で渡る callback_url パラメータへのリダイレクト処理
<例> PHP の場合
set_cookie.php
<?php // 実際には署名付きリクエストの検証を行い、その結果正しいリクエストの場合にのみ以下処理を行う setcookie("created_at", time(), time() + 2592000); header("Location: " . $_GET['callback_url']); ?>
項目 |
内容 |
---|---|
callback_url |
アプリへ処理を戻す為のリダイレクト先 URL 。この値は変更せず、そのままリダイレクト先に指定してください。 |
Cookie 有効化スクリプトへのリクエストには、改ざん防止を目的とした署名( OAuth Signature )が付加されています。
悪意を持ったユーザによる不正アクセスを防ぐため、署名の検証を行い以下のチェックを行ってください。
- mixi Platformから送信されたリクエストであること
- リクエストの内容が改ざんされていないこと
署名方式には RSA-SHA1 を利用しています。また公開鍵は こちら に掲載されているものをご使用ください。
実際の検証方法については、 署名付きリクエストの検証 に関するドキュメントを参照してください。
GET http://example.com/set_cookie.php?callback_url=http%3A%2F%2Fmixi.jp%2Frun_appli.pl%3Fid%3D31622 %26appParams%3D%257B%2522hoge%2522%253A%2522fuga%2522%257D&oauth_consumer_key=mixi.jp&oauth_nonce=d d947d8beeba0be07050&oauth_signature=mUP4NpHSvMzi%2Fb6%2FvGROv8Q5rdXlr8dwcS7jmK2iIF%2FIlgChIhNpb0dtH GCLuy4FT6C%2FCOJDb001%0AiqAyxZuky%2FmbFvy9U%2BsVgzhlYJgWnx5m%2Fv7Exgqdo3bjnbRiEkOR%2BKGJ1WFaOPlMwby MlMJK%2FGpA%0A7NZ%2FV0K14PZu2tXc3cuZ084apA87NA%2BZSjKslhts8PeNm2UqCMqRUnp0hc0irRk88ICFdiflJbvx%0ArQ OIP34vkUXEU1K2%2BOZZxmwJA9DwzOolfZHpHwFcE6peozdsFHCK9oDWKMv65j3ku7xtQaKvRhip%0AbrNMJfEHMBYrO6%2B6gI Iy3IKsl2I6qG%2FjgQee4g%3D%3D&oauth_signature_method=RSA-SHA1&oauth_timestamp=1348044449&oauth_versi on=1.0&xoauth_signature_publickey=app_touch_20120306
※(注意)GETリクエストです。
(3) アプリへリダイレクト
Cookie 有効化スクリプトが callback_url へリダイレクト処理を行うと、アプリ起動時と同様にアプリの スタートURL が POST で呼び出されます。
アプリ起動時と異なる点は、「 (1) mixi.cookie.enable() 関数の呼び出し 」で appParams に指定した値が、リクエストボディに含まれて渡ってきます。
例えば、以下のように appParams に hoge='fuga' を指定したとします。
mixi.cookie.enable({ url: "http://example.com/set_cookie.php", appParams: {hoge: 'fuga'} });
アプリは署名付きリクエストで以下のように呼び出されます。
POST http://example.com/start_app.php
※(注意)POSTリクエストです。
またリクエストボディには以下のようなパラメータが含まれます。
項目 |
渡される値、および例 |
---|---|
oauth_consumer_key |
リクエストが送信されたコンテナを示すキー |
oauth_nonce |
リクエスト毎に生成されるユニークな値 |
oauth_signature |
生成された署名 |
oauth_signature_method |
リクエストを署名するために使われたメソッド |
oauth_timestamp |
タイムスタンプ |
oauth_version |
署名に用いられたOAuathのバージョン |
opensocial_app_id |
アプリケーションID |
opensocial_owner_id |
アプリを登録しているユーザのID (※) |
opensocial_viewer_id |
アプリを実行しているユーザのID (※) |
xoauth_signature_publickey |
リクエストを署名するために使われた公開鍵の名前 |
hoge |
appParamsで指定されたその他のパラメーター |
※ opensocial_owner_id と opensocial_viewer_id は、ユーザ認可で r_profile を取得している場合にのみ付与されます。ユーザ認可については ユーザ認可について の項目をご参照ください。
また、新方式の mixiアプリ では、opensocial_owner_id と opensocial_viewer_id は常に同一の値となります。
アプリ起動時と同様に、署名の検証を行ってください。
起動時のパラメータとOAuth Signatureの検証
これで Cookie の設定/読み出しが行えるようになります。