10

我正在尝试在我的网站中实施 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?

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

4

7 回答 7

4

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

另请参阅此处, “不安全的 JavaScript 尝试使用 URL 访问框架...”错误在 Chrome webkit 检查器中不断生成

于 2012-01-03T03:13:45.517 回答
2

确保在页面顶部有这一行(它适用于我):

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="https://www.facebook.com/2008/fbml">
于 2012-10-24T09:49:08.257 回答
1

您只能使用您在 Facebook 应用程序中注册的同一个域名。

1.您需要一个公共域名(www.example.com)。
2. 您需要注册 Facebook 应用程序。
3. 从 Facebook 获取 2 个密钥并在代码中使用:
    appId      : 'xxxxxxxxxxxxxx',
于 2012-01-11T10:12:20.757 回答
1

无法使用域 localhost 测试所有 Facebook 集成。您需要将脚本放在任何公共访问域中,并且需要在开发者应用设置页面中更新 url。JavaScript 显示的安全错误是由于 facebook 脚本的此 localhost 访问

于 2011-12-16T16:13:22.360 回答
0

当我实现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 。

于 2011-11-04T23:13:42.880 回答
0

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

看起来问题与多个 fb js-sdk 冲突。

因此,解决方案可以将 addthis facebook like wdiget 替换为 native facebook like widget。

当未加载 js-sdk 时,我在 webkit 中还有另一个错误。我通过用 jQuery.getScript() 替换 window.fbAsyncInit 来解决这个问题。最终它还修复了错误“不安全的 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');
  //...
});
于 2013-08-02T10:32:53.197 回答
0

您可以调整您的本地主机机器,使其看起来属于 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 的域。

于 2012-01-25T21:12:20.657 回答