1

我知道 facebook 不允许 iframe 用于未经授权的应用程序,但我也无法 display: 'page' 与 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>
4

2 回答 2

2

这里有2个问题:

1) 出于安全考虑(点击劫持和网络钓鱼),对于方法:'oauth' 或 FB.login,显示:'popup' 是强制性的。我建议无论如何都使用 FB.login 来获取权限或进行身份验证,因为它更方便。

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

于 2011-10-15T13:52:51.323 回答
0

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

FB.login(function(response) {
  if (response.authResponse) {
    // user is logged in and has permissions
  }
}, {scope:'email'}); 
于 2011-10-15T05:31:37.253 回答