Google+登录 - 未捕获的SecurityError

Ada*_*ber 10 javascript authentication django google-plus google-oauth

我正在实施Google+登录的混合/一次性身份验证代码流,并在登录提示并授予应用程序权限后在Chrome的JS控制台中遇到此错误,可能是在Google的代码尝试回拨按钮时:

Uncaught SecurityError: Blocked a frame with origin "https://ww2.fa.org" from accessing a frame with origin "https://accounts.google.com". Protocols, domains, and ports must match.

在Safari或IE中似乎没有出现这种情况,并且有时在Firefox中会出现类似的权限错误,但在Chrome中可以更频繁地重现.使用登录按钮刷新框架(在遵循谷歌方面的提示之后)通常会导致刷新按钮"知道"登录成功调用成功处理程序...它应始终无需工作刷新,但不是.

有什么想法吗?登录位于https://ww2.fa.org/gauth/,如果您倾向于查看,它只会请求电子邮件范围!

mkh*_*tib 16

我摆脱此错误消息的方法是在API&auth - > Credentials下的Cloud Developers Console中添加https://accounts.google.comAUTHORIZED JAVASCRIPT ORIGINSOAuth客户端设置中.

更新

这实际上并没有解决它,当我改用gapi.auth.signIn而不是使用时,问题再次浮出水面gapi.login.render.如在注释中描述的问题,这个帖子是的是序列化g-oauth-window的属性,authResult把它发送到后端的时候.删除该参数或仅发送您需要的属性为我修复它.

var signInCallback = function(authResult) {
  delete authResult['g-oauth-window'];
  ajaxCallToBackend(authResult);
};
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


小智 8

如果你得到同样的错误,亚当发布的上述方法对你不起作用(它本身不起作用),请尝试下面的方法.

我通过禁用我已经安装的任何chrome扩展来解决问题,这些扩展读取并更改呈现的HTML以及重写页眉并向页面注入一种JavaScript.

一个这样的扩展(引起我的Blocked a frame with origin "https://apis.google.com" from accessing a frame with origin "https://example.com错误的那个)就是Ripple Emulator(Beta)0.9.15一个基于浏览器的html5移动应用程序开发和测试工具,它"读取并更改你访问的网站上的所有数据",因为它在扩展权限详细信息

我禁用的另一个此类扩展是ModHeader 1.2.4修改请求标题,这也是"读取并更改您访问的网站上的所有数据".

只需查看您的Chrome扩展程序,即可删除任何可疑的修改页面.

  • 删除Ripple Emulator为我解决了这个问题.谢谢 (3认同)