GoogleAPI 身份验证: 客户端的无效来源

当向 GoogleAPI (gapi)发出身份验证请求时,在 checkOrigin 上返回 false。

我已经删除了任何客户端 ID 或任何可以直接链接到我的帐户的东西,并用一个正则表达式替换了它,该正则表达式指示数据是什么以供参考。

厄尔: https://accounts.google.com/o/oauth2/iframerpc?action=checkOrigin&origin=https%3A%2F%2Flocal.tools&client_id=(\d{21})

我的原始 url 是一个本地 url,即 https://local.tools

结果: {valid: false}

我在这里使用的示例没有偏差(除了用我的21位客户端替换 clientid) : https://ga-dev-tools.appspot.com/embed-api/third-party-visualizations/

我试图显示的项目很好地显示在演示站点上,但是没有越过 local.tools 站点上客户端错误的无效原点。

156094 次浏览

在处理这个示例时,我收到了相同的控制台错误消息: https://developers.google.com/analytics/devguides/reporting/embed/v1/getting-started

文档说不要忽略两个关键步骤(“当你阅读说明时,重要的是不要忽略这两个关键步骤: 启用 Analytics API [ & ]设置正确的起点”) ,但没有明确说明在哪里设置正确的起点。

由于我的客户端 ID 无法工作,我创建了一个新项目和一个新的客户端 ID。这个新项目可能没有必要,但是我正在保留(并使用)它。

以下是起作用的方法:

在创建凭据期间,您将看到一个名为“限制”的部分 输入 JavaScript 起源,重定向 URI,或者两者都输入”。

保存并复制您的客户端 ID (和 secret)。

在创建新的 OAUTH 凭据、分配原点并使用新生成的客户端 ID 之后,脚本就可以工作了。

对我来说,我就是这样:

Https://console.developers.google.com/apis/credentials

然后选择正确的项目; 然后选择与控制台错误消息中显示的 ID 相同的凭据。编辑凭据时,可以向白名单添加多个起源。

如果没有启用 API,凭据就不起作用:

  1. 转到 https://console.developers.google.com/apis/library
  2. 输入“ People”
  3. 从结果中选择‘ Google People API’
  4. 单击“启用”

清除浏览器缓存。在 Chrome 中开始出现这个错误,然后我创建了一个新的客户端 ID,但仍然存在这个问题。打开了 Firefox,它工作了,所以我清空了 Chrome 的缓存,它开始工作了。

尝试清除缓存,然后硬重载,我有相同的错误,但当我试图运行在隐名浏览器在铬它工作。

我得到的错误,因为 允许-控制-允许-产地: * 浏览器扩展。

创建新的宣誓证书对我很有用

关键点: 为本地测试或开发将 http://localhosthttp://localhost:port_number添加到 AuthorizedJavaScript 起源框。

如果您正在本地主机上运行它,请将端口更改为5000,它将修复它

尝试使用不同的浏览器(chrome)对我来说很有效,在 Firefox 上清除缓存也解决了这个问题。

(附注: 如果不在 API 凭证中将主机 URI 添加到 AuthorizedJavaScript 起源,则会出现错误: redirect _ uri _ mismatch)

清理宝藏对我有用。

对于 对开发者做出反应尝试重新启动项目,否则它将显示相同的错误一次又一次。

这是 转介政策的问题。

这对我来说也是很长一段时间的痛苦。

发现问题,我的网站实例有一个引用策略设置为 无引用。在设置为无引用-当-降级,一 果然出现了点击提示。

Https://stackoverflow.com/a/63039142/15565029

如果使用 Django,则默认情况下 SECURE _ REFERRER _ POLICY 是“同源”。通过在设置文件中添加以下代码来更改它。

# settings.py
SECURE_REFERRER_POLICY = 'no-referrer-when-downgrade'

Https://docs.djangoproject.com/en/3.2/ref/settings/#std:setting-secure_referrer_policy

类似于上面的几个答案,但是有截图。如果您为 Firebase 创建了项目,也可以使用相同的步骤在 GoogleCloudPlatform 控制台进行配置。

  1. https://console.cloud.google.com/选择项目
  2. 导航到证书
  3. 单击相关 OAuth 2.0客户端 ID 的 Edit 按钮
  4. 将 URI 添加到授权的 JavaScript 起源
  5. 别忘了保存

enter image description here

enter image description here

清除缓存铬工程!

请找到以下清除缓存的步骤。

  1. 打开 dev tools (右键单击页面并选择 check/press F12)
  2. 开发工具打开时,右键单击 chrome 重新加载按钮。(您将找到清除缓存并重新加载站点的选项)

更新后的 授权的 JavaScript 源代码浏览器仍然缓存旧数据,所以我需要 空缓存和硬重载然后它的工作

1. 更改授权来源


enter image description here

2. 打开开发工具(F12) ,然后右键单击重新加载按钮


enter image description here

我试了一个小时后,这招奏效了:

https://console.cloud.google.com/apis/credentials台:

  • 编辑 Client Out (我的是: Web Client (由 Google Service 自动创建) ,它是由我的 FirebaseWeb 项目创建的)
  • 为客户端 ID 输入 JavaScript Origin (我的是: localhost: NNNN) 别忘了保存。
  • 尝试谷歌登录半小时: 没有工作
  • 按照上面的建议启用谷歌分析
  • 清空 Chrome 缓存并按照上面的建议重新加载
  • 尝试谷歌登录半小时: 没有工作
  • https://console.cloud.google.com登出,然后再次登入
  • 清空 Chrome 缓存和硬重载
  • 现在成功了

我不知道上面哪一个解决了这个问题。 也许云计算只是时间问题 认识到我的新 JavaScript 起源。

您可能会这样使用客户端 ID: < CLIENT _ ID > . apps.google.com

确保您的客户端 ID 没有“ . apps.google.com”

我得到了相同的错误,但尝试发布我的应用程序,现在它显示如下:

enter image description here