2011-08-04 5 views
1

私はFacebook Canvasアプリケーションを作成していますが、それ以上のものはdemo appです。Facebook auth.sessionイベントとページの変更

デモと同じように、最初のページの読み込み時に自分のサイトにPOSTされたsigned_requestからユーザーデータを取得できます。また、デモで示唆されているように、私は、ユーザーの変更にページをリロードするには、以下のスニペットを使用します。ここでは

var Config; 

function facebookInit(config) { 
    Config = config; 

    FB.init({...}); 
    FB.Event.subscribe('auth.sessionChange', handleSessionChange); 
    ... 
} 

function handleSessionChange(response) { 
    if ((Config.userIdOnServer && !response.session) || 
      Config.userIdOnServer != response.session.uid) { 
     goHome(); 
    } 
} 

function goHome() { 
    top.location = 'http://apps.facebook.com/' + Config.canvasName + '/'; 
} 

Configは、サーバーからの情報が移入されたオブジェクトです。

ユーザーがリンクを使用してアプリケーションをナビゲートすると問題が発生します。 AJAXを使用すると、ページは実際にリロードされず、すべて正常に動作します。しかし、標準のリンクを使用すると、ユーザーは標準のGETリクエストでアプリケーションの別のページに移動します。この場合、私はユーザーに関する情報を取得する方法を知らないので、Config.userIdOnServerは未定義であり、ページのリロードがトリガーされます。

もちろん、私はhandleSessionChangeへの呼び出しを削除するか、AJAXリンクだけで1ページのアプリケーションを作成することでこれを避けることができますが、私はFacebookの流れについて何か基本的なものを見逃しています。

答えて

1

私のせいで、次のリクエストのためにユーザーIDでクッキーを取得する際に問題が発生しました。