繁体   English   中英

Facebook显示:“页面”不适用于FB.ui,并且弹出窗口被浏览器阻止

[英]Facebook display: 'page' not working with FB.ui and popups are blocked by the browser

我知道Facebook不允许iframe用于未经授权的应用程序,但我无法显示:“页面”也无法与FB.ui一起使用。 唯一起作用的显示模式是弹出窗口。 即使弹出对话框阻止程序也阻止了登录对话框和FB.ui对话框,即使它们在其他所有使用Facebook登录名的网站上都可以使用。 即使用户单击FB.login和FB.ui函数,弹出窗口阻止程序也会启动。 这真的很烦人。 所以请帮帮我。

<html>
<head>
</head>
<body>
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js">
</script>
<script>
function xyz() 
{
FB.init({ 
appId:'113381182103752', cookie:true, 
status:true, xfbml:true, oauth:true     
});
FB.getLoginStatus(function(response) {
if(response.status=="connected")
{
document.getElementById("status").innerHTML="User is connected";
}
else if(response.status=="unknown")
{
FB.login(function(response) {
if(response.authResponse)
{
var token = response.authResponse.accessToken;
document.getElementById("tokendiv").innerHTML=token;
}
});
document.getElementById("status").innerHTML="User is logged out";
}
else if(response.status=="not_authorized")
{
FB.ui({
client_id: '113381182103752',
method: 'oauth',
redirect_uri: 'http://127.0.0.1:8888/test3.php',
response_type: 'token',
display: 'page'
});    
document.getElementById("status").innerHTML="User is connected but app is not authorized";
}
else
{
document.getElementById("status").innerHTML="Error";
}
});
}
</script> 
<div id="tokendiv"></div>
<div id="status"></div> 
<button onclick="xyz()">Click Here</button>
</body>
</html>

这里有两个问题:

1)显示:由于安全性(单击劫持和网络钓鱼),对于JavaScript SDK的方法:“ oauth”或FB.login,必须显示“ popup”。 我建议还是使用FB.login来获取权限或进行身份验证,因为它更方便。

2)您的弹出窗口被浏览器阻止,因为FB.login深度嵌套在您的javascript调用堆栈中,尽管用户已启动。 它必须由用户启动,并尝试重新设计代码,以便不嵌套FB.login。

尝试使用FB.login代替FB.getLoginStatus或代替FB.ui来处理弹出窗口。

FB.login(function(response) {
  if (response.authResponse) {
    // user is logged in and has permissions
  }
}, {scope:'email'}); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM