尝试使用移动版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
};
如果有人有解决方案......提前致谢!