mixi Developer Center (ミクシィ デベロッパーセンター)

mixiアプリ

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

リクエストが送信されたコンテナを示すキー
例 : mixi.jp

oauth_nonce

リクエスト毎に生成されるユニークな値
例 : f32d531cdf60369c16d1

oauth_signature

生成された署名
例 :
Au%2F5K%2BRAFRkgUWHpRBPW53UJqR1x6ngKE%2BKRk4n73pAJXrlIUhZgd
iMmXxFrUzcf5JjfEdyX9E3B%0AXESsvoGnABDPFTMJvE6V1t5Ge%2BB8qGm
Lw8m5wKHu7yCrV1exhVRaiV4ZqdHEX%2BFGeNVP%2BuZtKfxc%0ANHuStGt
c0h8V0muC4B1iARji4Or%2BaJEtuI8gwozUAm2T7F80rEcv3yN7Rwb2%2Bm
PFa5sXW3Ne%2FPp3%0AWZLZsl4O7mRzn0tdKk%2BypVLlgAvcb9xg%2BDDz
ijg1h4zpVPqE22toLSpioJAULOmMjEI2aiGXHcEh%0AQDSV2CWkyFitDLaU
C%2Fb4kUcbuUTlMXyezFzZvw%3D%3D

oauth_signature_method

リクエストを署名するために使われたメソッド
例 : RSA-SHA1

oauth_timestamp

タイムスタンプ
例 : 1348045323

oauth_version

署名に用いられたOAuathのバージョン
例 : 1.0

opensocial_app_id

アプリケーションID

opensocial_owner_id

アプリを登録しているユーザのID (※)

opensocial_viewer_id

アプリを実行しているユーザのID (※)

xoauth_signature_publickey

リクエストを署名するために使われた公開鍵の名前
例 : app_touch_20120306

hoge

appParamsで指定されたその他のパラメーター
例 : fuga

※ opensocial_owner_id と opensocial_viewer_id は、ユーザ認可で r_profile を取得している場合にのみ付与されます。ユーザ認可については ユーザ認可について の項目をご参照ください。
また、新方式の mixiアプリ では、opensocial_owner_id と opensocial_viewer_id は常に同一の値となります。

アプリ起動時と同様に、署名の検証を行ってください。
起動時のパラメータとOAuth Signatureの検証

これで Cookie の設定/読み出しが行えるようになります。

このページの上部へ