开发者

Facebook auth.sessionChange event and page changes

开发者 https://www.devze.com 2023-03-25 01:50 出处:网络
I am creating a Facebook Canvas application, and I am following more or less the demo app. As in the demo, I can get the user data from the signed_request which is POSTed to my site on the first page

I am creating a Facebook Canvas application, and I am following more or less the demo app.

As in the demo, I can get the user data from the signed_request which is POSTed to my site on the first page load. Moreover, as suggested in the demo, I use the following snippet to reload the page on user changes:

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 + '/';
}

Here Config is an object which is populated with info from the server.

The problem appears when the user navigates the application using a link. If I use AJAX, the page is not actually reloaded and everything works fine. But if I use a standard link, the user comes to another page of my application with a standard GET request. In this case, I do not know how to get the info about the user, so Config.userIdOnServer is undefined and a page reload is triggered.

Of course I can avoid this by removing the call to handleSessionChange, or by making a one-page app with only AJAX links, but I feel I am missing something basic abo开发者_如何学Pythonut the Facebook flow.


My fault, I had problems in retrieving the cookie with the user identity for subsequent requests.

0

精彩评论

暂无评论...
验证码 换一张
取 消