Facebook JS API 无法注销
Posted
技术标签:
【中文标题】Facebook JS API 无法注销【英文标题】:Facebook JS API can't logout 【发布时间】:2014-04-15 09:33:30 【问题描述】:我有一个localhost
网站和带有FB.logout()
的脚本。经过一些操作后,它无法让我退出,我在控制台中看到下一条错误消息:
Refused to display 'https://www.facebook.com/home.php' in a frame because it set 'X-Frame- Options' to 'DENY'.
我搜索了所有 *** 并没有找到任何可行的解决方案。网络检查器显示 home.php 附近的查询已取消。
所以我知道该脚本试图在框架中加载 Facebook 主页,但它不能,因为它被禁止。那么我该如何解决呢?为什么logout()
对我不起作用?
我的代码
// Facebook Basic Example
window.fbAsyncInit = function()
FB.init(
appId : '579651098766258',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
);
FB.Event.subscribe('auth.authResponseChange', function(response)
if (response.status === 'connected')
testAPI();
else if (response.status === 'not_authorized')
FB.login();
else
FB.login();
);
;
(function(d)
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) return;
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
(document));
function testAPI()
FB.api('/me', function(res)
console.log(res);
setTimeout(function()
FB.logout(); // <-- ERROR
, 2000);
);
【问题讨论】:
你能发布你的代码吗? @AdamAzad 已添加到我的帖子中 我用我的应用程序尝试了代码,它运行良好!可能这是一个错误 你在本地主机或网络服务器上尝试过吗? @AdamAzad 我也有同样的问题,你找到解决办法了吗? 【参考方案1】:这个解决方案对我有用:
-
转到 Facebook 应用程序中的“设置”选项卡,然后在“基本”选项卡中向下滚动到 +添加平台
点击+添加平台并选择网站
添加您网站的网址(对我来说,与重定向 URI 的高级选项卡中添加的网址相同)
保存更改并再次测试。
我还制作了一个 youtube 视频来解决这个问题:https://www.youtube.com/watch?v=7CNpLgwa0-c
【讨论】:
这个解决方案对我有用。 “添加平台”对我来说真的没有什么意思! 对我来说似乎是点击左侧栏中的“Facebook 登录”,显示 OAuth url 位置 我希望 FB 承认多个域。如图所示,我可以将这些域添加到“应用程序域”字段中。 现在没有“添加平台”链接 目前需要在“App Domains”输入中添加正在使用的路径。就我而言,它看起来像这样:“example.com/testefb/facebookLogin.php”【参考方案2】:我必须在 Facebook 应用控制面板的“设置”选项卡中设置“应用域”字段才能使其正常工作:
【讨论】:
你是对的,设置 -> 基本的应用域和站点 URL 必须匹配。【参考方案3】:2019 年 5 月 2 日更新:
1) 现在强制使用 https,因此您必须使用 https://localhost。 http 将不再可用。
2) 您需要将您的本地主机列入白名单,方法是转到“设置”>“基本”>“添加平台”并选择“网站”
【讨论】:
【参考方案4】:我不确定您的 html 是什么样子,但对我来说,这在我的注销按钮上起作用:
onclick="javascript:FB.logout(function() window.location.reload() ); return false;"
我希望这能帮助别人,至少这解决了我的问题。
【讨论】:
【参考方案5】:2018 年更新
在 App Dashboard 的 Facebook Login 产品下,单击 Quickstart 并按照说明进行操作。 Logout API 调用应该开始工作了!
注意:我选择了 WWW,并在站点 URL 中输入了http://localhost:5757/
。
【讨论】:
【参考方案6】:我发现使用 www.example.com 会出现此错误,而没有 www (example.com) 则不会出现错误...
【讨论】:
【参考方案7】:这个解决方案对我有用 -
-
转到 facebook 登录 -> 快速入门 -> www -> 设置应用源网址“https://localhost:4200”。
【讨论】:
以上是关于Facebook JS API 无法注销的主要内容,如果未能解决你的问题,请参考以下文章
Facebook 的 Sharekit(Graph API 版本)注销方法未完全注销或取消授权用户
使用 facebook api 从我的应用程序中的 facebook 注销问题