我正在尝试实现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');
//...
});