Google+登录-未捕获的安全错误

Google+ Sign-In - Uncaught SecurityError

本文关键字:安全 错误 登录 Google+      更新时间:2023-09-26

我正在实现Google+ Sign-In的混合/一次性认证代码流,并在登录提示和授予应用程序权限后在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中更容易重复。使用登录按钮刷新框架(在遵循google端提示之后)通常会导致刷新的按钮"知道"登录成功(调用成功处理程序)…应该总是不需要刷新就可以工作,但是没有。

任何想法吗?登录是在https://ww2.fa.org/gauth/,它只要求电子邮件范围,如果你倾向于采取一看!

我摆脱这个错误信息的方式是在API &下的Cloud Developers Console中的OAuth客户端设置中将https://accounts.google.com添加到AUTHORIZED JAVASCRIPT ORIGINS;auth ->凭据。

这实际上并没有解决它,当我切换到使用gapi.auth.signIn而不是gapi.login.render时,问题再次出现。在这篇文章的评论中描述的问题是authResultg-oauth-window属性在发送到后端时的序列化。删除该参数或只发送您需要的属性为我修复它。

var signInCallback = function(authResult) {
  delete authResult['g-oauth-window'];
  ajaxCallToBackend(authResult);
};

如果您得到相同的错误,并且上面的方法由Adam发布不适合您(它不适合我)尝试下面的方法。

我通过禁用我安装的任何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扩展和消除任何你怀疑修改页面。