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 注销 API - 为啥下一步?

Facebook 的 Sharekit(Graph API 版本)注销方法未完全注销或取消授权用户

使用 facebook api 从我的应用程序中的 facebook 注销问题

无法使用 Facebook C# SDK 注销 Facebook

Facebook 个人资料访客图表 API

Facebook API - javascript sdk:注销后状态显示“已连接”