【问题标题】:Facebook JS API can't logoutFacebook JS API 无法注销
【发布时间】: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'.

我搜索了所有 StackOverflow 并没有找到任何可行的解决方案。网络检查器显示 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
  • 我也有同样的问题,你找到解决办法了吗?

标签: javascript facebook oauth-2.0 facebook-javascript-sdk


【解决方案1】:

这个解决方案对我有用:

  1. 转到 Facebook 应用程序中的“设置”选项卡,然后在“基本”选项卡中向下滚动到 +添加平台
  2. 点击+添加平台并选择网站
  3. 添加您网站的网址(对我来说,与重定向 URI 的高级选项卡中添加的网址相同)
  4. 保存更改并再次测试。

我还制作了一个 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】:

          这个解决方案对我有用 -

          1. 转到 facebook 登录 -> 快速入门 -> www -> 设置应用源网址“https://localhost:4200”。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-03-06
            • 2013-06-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多