Chrome/Safari(webkit)中的Facebook Javascript SDK登录问题-不安全的Javascript尝试
有人问过类似的问题,但这些问题的解决方案似乎对我没有帮助 我在虚拟机上设置了一个本地开发站点: 当index.php加载时,我已经运行了这个javascript(使用正确的appId): 然后,单击按钮时,会触发此javascript函数:Chrome/Safari(webkit)中的Facebook Javascript SDK登录问题-不安全的Javascript尝试,javascript,facebook,webkit,angularjs,hosts,Javascript,Facebook,Webkit,Angularjs,Hosts,有人问过类似的问题,但这些问题的解决方案似乎对我没有帮助 我在虚拟机上设置了一个本地开发站点: 当index.php加载时,我已经运行了这个javascript(使用正确的appId): 然后,单击按钮时,会触发此javascript函数: #HTML <li><a class="btn" href="#" ng-click="connectToFacebook()">Connect with Facebook</a></li> #Snippet
#HTML
<li><a class="btn" href="#" ng-click="connectToFacebook()">Connect with Facebook</a></li>
#Snippet in AngularJS Controller
$scope.connectToFacebook = function() {
facebookConnect.authenticate(
function(reason) { // fail
console.log(reason);
},
function(user) { // success
console.log('logged in',user);
//Session.login();
});
return false;
}
#Factory in AngularJS module
.factory('facebookConnect', function() {
return {
authenticate: function(fail, success) {
FB.login(function(response) {
console.log(response);
if (response.authResponse) {
FB.api('/me', success);
} else {
fail('User cancelled login or did not fully authorize.');
}
});
}
}
我已经将我的本地测试URL添加到了开发人员部分的facebook应用程序中,因为它使用Firefox登录。这是我的频道文件,存储在
这是我笔记本电脑上运行的VirtualBox Ubuntu服务器的IP地址。我可以很好地浏览那个网站。你的工厂有一些奇怪的JavaScript:返回新函数()。。。除此之外,我看不出有什么问题。我使用相同的基本技术,我在Chrome上没有任何问题
确保您的Facebook应用程序已设置到您的域(我们称之为“mydomain.com”)。。。然后,要在本地进行测试,您需要编辑指向mydomain.com的命令,将其指向127.0.0.1。。。因此,浏览器位置中的URL符合Facebook的预期
这可能是我和你唯一的区别
。。。另外,请确保您的应用程序ID是设置Facebook应用程序时使用的正确应用程序ID。再检查一遍。BS“测试”应用程序ID也会给你错误消息
-
-
编辑:在新函数(){}
前面我认为这不是你的问题。。。。我想再解释一下:
var x = new function() { this.foo = 'test'; };
与
var x = { foo: 'test' };
因为new
关键字用于将函数作为对象构造函数调用,并且您正在匿名函数上使用new,无法再次使用,因此没有理由声明它
因此,您的代码片段可能(也可能应该)是:
沙盒模式必须被禁用才能在Chrome中工作。就这样,就这样了
我启用了该模式,因为我认为这会阻止它出现在搜索中,这是我不想要的。在Firefox中运行时,我看不出这是一个问题。但现在,我关闭了沙盒模式,它立即开始工作
我不明白为什么会停止Chrome。我也有同样的问题,使用PhoneGap的插件进行原生Facebook身份验证。昨天,当我最后一次运行应用程序时,它工作了。今天-错误。请稍后再试:(希望这是一个全球性的Facebook错误。为什么要异步加载fb sdk?您是否尝试过以默认方式加载它?我没有尝试过非异步方式,我会尝试,但Facebook文档在其示例中显示了异步方式:。一方面,页面加载时间更好。如果使用同步方法,我会得到弹出窗口和same错误,但单击“确定”只会将我带到facebook,它不会重定向我。firefox停止工作。如果该行只是return function()
,我会“我不确定是什么错误。它肯定是正确的应用程序ID,经过仔细检查,并且在Firefox中工作。我已经设置了Facebook应用程序设置,将我的本地主机URL用作“应用程序域”,lamp.siteyeah…return function(){}”“new
关键字是为作为对象构造函数调用函数而保留的。如果我取出新的,我会得到错误,object function(){this.authenticate=function…}没有方法“authenticate”
那么…return new function(){}与return{}完全相同。”…因为您正在创建一个匿名函数并将其作为构造函数调用。无论如何,我认为您的问题更多地与浏览器位置栏中的URL有关,而不是与任何内容有关。您需要编辑主机文件,以便在Facebook希望看到的域名上进行本地调试。
<script src="http://connect.facebook.net/en_US/all.js"></script>
192.168.0.13 lamp.site
var x = new function() { this.foo = 'test'; };
var x = { foo: 'test' };
.factory('facebookConnect', function() {
return {
authenticate: function(fail, success) {
FB.login(function(response) {
console.log(response);
if (response.authResponse) {
FB.api('/me', success);
} else {
fail('User cancelled login or did not fully authorize.');
}
});
}
}
});