Facebook oauth弹出窗口被浏览器阻止

Facebook oauth弹出窗口被浏览器阻止,facebook,oauth-2.0,popup,Facebook,Oauth 2.0,Popup,请帮忙,我的代码有什么问题,因为浏览器阻塞弹出facebook窗口。我不知道。在某些浏览器中,它被阻止,有时是正常的。我必须找出解决办法 /*facebook oauth*/ $('oauth_facebook')。在('click',函数(事件){ event.preventDefault(); window.fbAsyninit=函数(){ FB.init({ appId:“crmk_玟玟玟玟玟玟”, 曲奇:是的, xfbml:是的, 真的吗 }); FB.getLoginStatus(函

请帮忙,我的代码有什么问题,因为浏览器阻塞弹出facebook窗口。我不知道。在某些浏览器中,它被阻止,有时是正常的。我必须找出解决办法

/*facebook oauth*/
$('oauth_facebook')。在('click',函数(事件){
event.preventDefault();
window.fbAsyninit=函数(){
FB.init({
appId:“crmk_玟玟玟玟玟玟”,
曲奇:是的,
xfbml:是的,
真的吗
});
FB.getLoginStatus(函数(响应){
console.log('success');
如果(response.status===“已连接”){
var accessToken=response.authResponse.accessToken;
var userID=response.authResponse.userID;
var用户名,userEmail;
var url='/me?fields=姓名、电子邮件、图片。宽度(300)。高度(300)';
虚拟化身;
api(url、函数(响应){
用户名=response.name;
userEmail=response.email;
avatar=response.picture.data.url;
$.ajax({
键入:“POST”,
url:api+'login/oauth2',
数据:{
阿凡达:阿凡达,
令牌:accessToken,
},
成功:功能(数据){
},
错误:函数(xhr、str){
console.log(str);
}
});
});
}
否则{
FB.登录(功能(响应){
如果(response.status===“已连接”){
var url='/me?fields=姓名、电子邮件、图片。宽度(300)。高度(300)';
var用户名、userEmail、accessToken、userID;
accessToken=response.authResponse.accessToken;
userID=response.authResponse.userID;
api(url、函数(响应){
用户名=response.name;
userEmail=response.email;
avatar=response.picture.data.url;
$.ajax({
键入:“POST”,
url:api+'login/oauth2',
数据:{
阿凡达:阿凡达,
令牌:accessToken,
},
成功:功能(数据){
},
错误:函数(xhr、str){
console.log(str);
}
});
}
});//api FB
},{范围:'电子邮件'});
}
});
};
(功能(){
var e=document.createElement('script');
e、 异步=真;
e、 src=document.location.protocol+
“//connect.facebook.net/en_US/all.js”;
document.getElementById('fb-root').appendChild(e);
}());
});

/*facebook oauth*/
可能重复您需要在用户交互上直接调用
FB.login
(通常是在某个地方单击)–您不能将其嵌套到异步工作的其他函数中(例如
FB.getLoginStatus
)–这将失去“连接”在用户单击和尝试打开弹出窗口之间,因此它将被阻止。我建议您嵌入并初始化SDK,并在页面加载时在单击处理程序之外检查用户的登录状态。然后,如有必要,您可以直接在单击处理程序中调用
FB.login
。好的,谢谢,因此我的代码应该是什么样子?可能重复的代码需要在用户交互上直接调用
FB.login
(通常是在某处单击)–您不能将其嵌套到异步工作的其他函数中(例如
FB.getLoginStatus
)–这将丢失“连接”在用户单击和尝试打开弹出窗口之间,它将被阻止。我建议您嵌入并初始化SDK,并在页面加载时检查用户在单击处理程序之外的登录状态。然后,如果需要,您可以在单击处理程序中直接调用
FB.login
。好的,谢谢,因此如何操作我的代码应该是什么样子?