3

尝试在移动 Safari 和 Android 浏览器上使用 javascript SDK 登录 facebook 时,发生了一些奇怪的事情。当我清除我的“历史记录”和“cookie 和数据”并尝试使用 FB.login 方法登录 Facebook 时,Safari 和 Android 浏览器会打开一个带有身份验证 URL 的新选项卡,但保持空白。在所有桌面浏览器中,一切正常。

奇怪的是,当我清除我的“历史记录”和“cookies 和数据”时,然后访问 facebook.com(没有登录或其他任何东西),关闭网站,打开我的网站,然后尝试登录 FB,它实际上像它应该的那样工作!

所以这似乎 facebook.com 设置了一个 cookie,导致身份验证 URL 成功加载。

我一直在寻找解决这个问题的方法,但找不到任何东西,因此我的第一个 stackoverflow 帖子......

为了完整起见,这是我用来初始化 FB SDK 的代码:

window.isFacebookSDKLoaded = false;
window.onFacebookSDKLoaded = function () {}; //is injected with a function from another js app on the site

window.fbAsyncInit = function() {
    FB.init({
        appId      : '{{ appID }}', // App ID
        channelUrl : '{{ baseUrl }}channel.php', // Channel File
        status     : true, // check login status
        cookie     : true, // enable cookies to allow the server to access the session
        xfbml      : true  // parse XFBML
    });
    window.isFacebookSDKLoaded = true;
    window.onFacebookSDKLoaded();
};

(function(d){
 var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
 js = d.createElement('script'); js.id = id; js.async = true;
 js.src = "//connect.facebook.net/en_US/all.js";
 d.getElementsByTagName('head')[0].appendChild(js);
}(document));

我的应用程序中的其他地方我只是简单地做:(使用谷歌关闭)

mm.controller.facebook.DoFBLogin.prototype.doLogin = function ()
{
    FB.login( goog.bind( this.loginResult, this ), { scope: app.Config.getFBPermissions() } );
}

mm.controller.facebook.DoFBLogin.prototype.loginResult = function ( result )
{
    // logged in
};

如果有人有解决方案...在此先感谢!

4

0 回答 0