Facebook auth.sessionChange事件和页面更改

时间:2011-08-04 14:36:37

标签: javascript facebook facebook-javascript-sdk

我正在创建一个Facebook Canvas应用程序,我或多或少关注demo app

在演示中,我可以从第一页加载时发布到我网站的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链接创建一个单页应用程序来避免这种情况,但我觉得我遗漏了一些关于Facebook流程的基本知识。

1 个答案:

答案 0 :(得分:1)

我的错,我在检索带有后续请求的用户身份的cookie时遇到了问题。