我正在创建一个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流程的基本知识。
答案 0 :(得分:1)
我的错,我在检索带有后续请求的用户身份的cookie时遇到了问题。