Facebook身份验证-不安全的JavaScript试图访问框架与URL


Facebook Authentication - Unsafe JavaScript attempt to access frame with URL

我正在尝试实现Facebook登录系统到我的网站。

当它试图连接到facebook,我得到一个错误从控制台日志:

Unsafe JavaScript attempt to access frame with URL https://s-static.ak.fbcdn.net/connect/xd_proxy.php?xxxxxxxxxxxxxxxx

我正在使用JavaScript SDK

我在body标签中添加了这个:

<div id="fb-root"></div>
<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId      : 'xxxxxxxxxxxxxx',
            status     : true, 
            cookie     : true,
            xfbml      : true
        });
    };
    (function(d){
        var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
        js = d.createElement('script'); js.id = id; js.async = true;
        js.src = "//connect.facebook.net/en_US/all.js";
        d.getElementsByTagName('head')[0].appendChild(js);
    }(document));
    </script>

Facebook登录按钮:

<div class="fb-login-button"  data-perms="email">Login with Facebook</div>

我正在测试从localhost -我已经注册我的网站在facebook开发应用程序(网站URL: http://localhost)

如何解决这个问题?还是应该使用PHP SDK?

编辑:同样的问题,当我上传到服务器与公共领域。

您在这里看到的错误是非致命错误。没有解决这个问题的方法,因为您的浏览器会建议您从外部域加载JavaScript不是一个好主意。如果脚本不能运行,请忽略此消息并在其他地方查找错误。Sajith说的也对,你不能从本地主机调试。

也见这里,不安全的JavaScript试图访问带有URL的框架…Chrome webkit检查器

确保在你的页面顶部有这一行(这对我来说很有效):

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="https://www.facebook.com/2008/fbml">

使用域localhost测试所有Facebook集成是不可能的。你需要把你的脚本在任何公共访问域,并需要在开发者应用程序设置页面更新url。JavaScript显示的安全错误是由于facebook脚本访问本地主机

您只能使用已注册Facebook应用程序的相同域名。

<>之前1. 您需要一个公共域名(www.example.com)。2. 你需要注册Facebook应用程序。3.从Facebook获得2个关键,并在代码中使用:之前
    appId      : 'xxxxxxxxxxxxxx',

当我实现fileglu时出现此错误,它可能是CORS错误,因为您正在运行本地主机。试着在Facebook上运行,你可以用下面的代码替换下半部分:

(function() {
  var e = document.createElement('script');
  e.src = document.location.protocol + 
     '//connect.facebook.net/en_US/all.js#appId=<your-app-id>&xfbml=1';
  e.async = true;
  document.getElementById('fb-root').appendChild(e);
}());

我还在FB.init()页面中启用了Oauth 2.0和自定义通道。查看:http://fbdevwiki.com/wiki/FB.init

您可以调整您的本地主机,使其显示为facebook所需的域。

在linux或OSX上,添加一个条目到/etc/hosts;在windows上,编辑c:'windows'system32'drivers'etc'hosts。添加如下条目:

127.0.0.1 local-dev.mydomain.com local-dev

其中"mydomain.com"是您的FB应用程序ID注册的域名

在我的情况下,错误是由在已经有FB应用程序的网站上使用addthis加载的类似小部件引起的。

问题似乎是与多个fb js-sdk冲突。

所以解决方案可以用本地的facebook like widget代替addthis facebook like widget。

当js-sdk未加载时,我在webkit中也有另一个错误。我通过更换窗户来解决这个问题。jQuery.getScript()。最后,它修复了错误"不安全的JavaScript试图访问帧与URL"也。

示例:

$.ajaxSetup({ cache: true });
$.getScript('//connect.facebook.net/en_UK/all.js', function() {
  FB.init({
    appId: 'your app id',
    cookie: true,
    xfbml: true,
    oauth: true,
    status: true
  });
  // Trigger custom event so we can use it to run init dependent actions in different places.
  $(document).trigger('FBSDKLoaded');
  //...
});