我遇到了在Safari和IE上登录Facebook的问题。我可以使用以下代码在Chrome和Firefox上正常登录:
var appId = 'APP ID';
var uid;
// Initialize the JS SDK
FB.init({
appId: appId,
status: true, // check login status
cookie: true, // enable cookies to allow the server to access the session
xfbml: true, // parse XFBML
channelUrl: '//localhost:8888/photo/channel.html' // Channel File
});
// Get the user's UID
FB.getLoginStatus(function(response) {
uid = response.authResponse.userID ? response.authResponse.userID : null;
console.info(uid);
});
function authUser() {
FB.login(function(response) {
console.info(response);
uid = response.authResponse.userID ? response.authResponse.userID : null;
console.info("called");
}, {scope:'email,publish_actions'});
但是当我的代码在Safari和IE上转到FB.getLoginStatus
时,响应会显示
authResponse: undefined
status: "unknown"
编辑:忘记提及在Safari和IE中没有弹出显示权限的弹出窗口。
答案 0 :(得分:1)
如果状态为“未知”,则表示以下两种情况之一:
Safari是默认情况下禁用第三方cookie的唯一浏览器(Firefox将很快跟进)。 IE中的一些较高安全性设置也会将其关闭。由于您的代码在Firefox / Chrome中运行,我猜这是罪魁祸首。
不幸的是,FB.getLoginStatus需要第三方cookie来返回适当的authResponse和状态。我认为您的选择非常有限:
答案 1 :(得分:0)
我实际上没有通过在Facebook而不是我的本地主机上运行应用来解决我能解决的问题。我相信这是因为在Facebook上我已经登录了。