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

Google API authentication: Not valid origin for the client

当向 Google API (gapi) 发出授权请求时,它在 checkOrigin 上返回 false。

我已经删除了所有客户 ID 或任何会 link 直接进入我的帐户的内容,并将其替换为表明数据供参考的正则表达式。

Url: 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}

我正在使用此处找到的示例,没有任何偏差(除了将 clientid 替换为我的 21 位 clientid):https://ga-dev-tools.appspot.com/embed-api/third-party-visualizations/

我尝试显示的项目在演示站点上显示得很好,但在我的 local.tools 站点上没有通过客户端错误的无效来源。

我在使用此示例时收到相同的控制台错误消息:https://developers.google.com/analytics/devguides/reporting/embed/v1/getting-started

文档中说不要忽略两个关键步骤(“当您按照说明进行操作时,请务必不要忽略这两个关键步骤: 启用 Analytics API [&] 设置正确的来源”),但没有明确说明在何处设置正确的来源。

由于我的客户端 ID 无效,我创建了一个新项目和一个新的客户端 ID。新项目可能不是必需的,但我保留(并使用)它。

这是有效的方法:

在创建凭据的过程中,您会看到一个名为“限制”的部分 输入 JavaScript 来源、重定向 URI 或两者。您可以在此处输入来源。

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

我的脚本在我创建新的 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. 点击'Enable'

清除浏览器缓存。开始在 Chrome 中收到此错误,然后我创建了一个新的客户端 ID,但问题仍然存在。打开 firefox 就可以了,所以我清除了 Chrome 上的缓存,它开始工作了。

尝试清除缓存,然后重新加载,我遇到了同样的错误,但是当我在 chrome 中尝试在隐身浏览器上 运行 时,它成功了。

由于 Allow-Control-Allow-Origin: * 浏览器扩展,我收到错误消息。

创建新的 oauth 凭据对我有用

要点: 将两者 http://localhost and http://localhost:port_number 添加到授权 JavaScript 来源框以进行本地测试或开发。

如果你是 运行 它在本地主机上将端口更改为 5000 它将修复它

尝试使用不同的浏览器 (chrome) 对我有用,清除 firefox 上的缓存解决了问题。

(PS: 不将托管 URI 添加到 API 凭据中的授权 JavaScript 来源会给你 Error:redirect_uri_mismatch)

清除缓存对我有用。

对于React 开发者 尝试重新启动项目否则它会一次又一次地显示相同的错误。

这是一个推荐人政策问题。

这也让我痛苦了很长时间...

Found the issue, my website instance had a referrer policy set to no-referrer. After setting it to no-referrer-when-downgrade, the One Tap prompt showed up as expected.

如果您使用的是 Django,SECURE_REFERRER_POLICY 默认为 'same-origin'。通过在您的设置文件中添加以下代码来更改它。

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

https://docs.djangoproject.com/en/3.2/ref/settings/#std:setting-SECURE_REFERRER_POLICY

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

  1. Select https://console.cloud.google.com/
  2. 的项目
  3. 导航到凭据
  4. 单击相关 OAuth 2.0 客户端 ID 的编辑按钮
  5. 将 URI 添加到授权 JavaScript 来源
  6. 别忘了保存

清除 chrome 上的缓存有效!

请按照以下步骤清除缓存。

  1. 打开开发工具(右键单击页面并 select 检查/按 F12)
  2. 在打开开发工具时右键单击 chrome 重新加载按钮。 (您会找到清除缓存并重新加载站点的选项)

更新后授权JavaScript来源浏览器仍然缓存旧数据,所以我需要清空缓存并重新加载然后有效

1。更改授权来源


2。打开 Dev Tool (F12) 然后右键单击进入重新加载按钮


我尝试了一个小时后对我有用:

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

  • 编辑客户端(我的是:Web 客户端(由 Google 服务自动创建),它是由我的 Firebase Web 项目创建的)
  • 为客户端 ID 输入 JavaScript 来源(我的是:localhost:NNNN) 别忘了保存。
  • 尝试google登录半小时:没成功
  • 已启用 Google 如上所述的分析
  • 按照上面的建议清空 Chrome 缓存和硬重新加载
  • 尝试google登录半小时:没成功
  • https://console.cloud.google.com 注销,然后重新登录
  • 清空 Chrome 缓存和硬重新加载
  • 现在有效

我不知道以上哪一项解决了问题。 cloud.google 可能只是时间问题 认识我的新 JavaScript 来源。

您可能使用这样的客户端 ID:.apps.google.com

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