当移动浏览器上没有设置facebook cookie时,FB.login url会提供空白页面

时间:2013-03-12 18:19:44

标签: javascript mobile facebook-javascript-sdk

尝试使用移动版Safari和Android浏览器上的javascript SDK登录Facebook时发生了一些事情。当我清除“历史记录”和“饼干和数据”并尝试使用FB.login方法登录Facebook时,Safari和Android浏览器会打开一个带有auth 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
};

如果有人有解决方案......提前致谢!

0 个答案:

没有答案