当向 Google API (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 位客户端 ID 替换客户端 ID):https://ga-dev-tools.appspot.com/embed-api/third-party-visualizations/
我尝试显示的项目很好地显示在演示站点上,但没有超过我的 local.tools 站点上的 Not valid origin for the client 错误。
清除浏览器缓存。开始在 Chrome 中收到此错误,然后我创建了一个新的客户端 ID,但仍然遇到问题。打开firefox,它工作了,所以我清除了Chrome上的缓存,它开始工作了。
使用此示例时,我收到了相同的控制台错误消息:https://developers.google.com/analytics/devguides/reporting/embed/v1/getting-started
文档说不要忽略两个关键步骤(“当您阅读说明时,重要的是不要忽略这两个关键步骤:启用分析 API [&] 设置正确的来源”),但没有明确说明在哪里设置正确的原点。
由于我的客户 ID 不起作用,我创建了一个新项目和一个新的客户 ID。新项目可能不是必需的,但我保留(并使用)它。
这是有效的:
创建一个新项目
添加并启用分析 API
创建新凭证 - 确保它是 OAUTH 凭证(滚动到此页面底部以获取说明 https://developers.google.com/api-client-library/javascript/start/start-js#Setup)。
在创建凭据期间,您将看到一个名为“限制输入 JavaScript 来源、重定向 URI 或两者”的部分。在这里您可以输入您的出身。
保存并复制您的客户端 ID(和密码)。
在我创建新的 OAUTH 凭证、分配源并在此过程之后使用新生成的客户端 ID 后,我的脚本工作了。
尝试清除缓存然后硬重新加载,我遇到了同样的错误,但是当我尝试在 chrome 中的隐身浏览器上运行时,它起作用了。
如果未启用 API,凭据将不起作用。就我而言,需要执行以下步骤:
转到 https://console.developers.google.com/apis/library 输入“People” 从结果中选择“Google People API” 点击“启用”
要点:将 http://localhost 和 http://localhost:port_number 添加到 Authorized JavaScript origins 框以进行本地测试或开发。
创建新的 oauth 凭据对我有用
对我来说 - 我刚到这里:
https://console.developers.google.com/apis/credentials
然后选择合适的项目;然后选择与控制台错误消息中显示的 ID 相同的凭据。编辑凭据时,您可以将多个来源添加到白名单。
您可能会像这样使用客户端 ID:
确保您的客户端 ID 没有“.apps.google.com”
client_id=<CLIENT_ID>.apps.google.com
的原始 URL 被 Google 缓存了很长一段时间,而具有更新 ClientID 的那个不是(即使两者应该相同)。
更新后授权 JavaScript 来源浏览器仍在缓存旧数据,所以我需要清空缓存并重新加载它才能工作
1.更改授权来源
https://i.stack.imgur.com/3Js2p.png
2.打开开发工具(F12)然后右键单击重新加载按钮
https://i.stack.imgur.com/menLn.png
清除 chrome 上的缓存有效!
请找到以下步骤以清除缓存。
打开开发工具(右键单击页面并选择检查/按 F12)在打开开发工具时右键单击 chrome 重新加载按钮。 (您将找到清除缓存并重新加载站点的选项)
清除缓存对我有用。
对于 React 开发人员,请尝试重新启动项目,否则它将一次又一次地显示相同的错误。
这是一个推荐人政策问题。
这对我来说也痛苦了很久......
发现了问题,我的网站实例的引荐来源网址策略设置为无引荐来源网址。将其设置为 no-referrer-when-downgrade 后,One Tap 提示按预期显示。
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 创建了项目,也可以使用相同的步骤在 Google Cloud Platform 控制台上进行配置。
在 https://console.cloud.google.com/ 中选择项目 导航到凭据 单击相关 OAuth 2.0 客户端 ID 的编辑按钮 将 URI 添加到授权的 JavaScript 源 不要忘记保存
https://i.stack.imgur.com/jxUNE.png
https://i.stack.imgur.com/ArTQ8.png
尝试了一个小时后,这对我有用:
在 https://console.cloud.google.com/apis/credentials 上:
编辑客户端输出(我的是:Web 客户端(由 Google 服务自动创建),由我的 Firebase Web 项目创建)
为客户端 ID 输入 JavaScript Origin(我的是:localhost:NNNN),不要忘记保存。
尝试谷歌登录半小时:没用
如上所述启用 Google Analytics
如上所述,清空 Chrome 缓存并硬重新加载
尝试谷歌登录半小时:没用
从 https://console.cloud.google.com 注销,然后重新登录
清空 Chrome 缓存并重新加载
现在它起作用了
我不知道上面哪一个解决了这个问题。 cloud.google 识别我的新 JavaScript 起源可能只是时间问题。
尝试使用不同的浏览器(chrome)对我有用,清除 Firefox 上的缓存解决了这个问题。
(PS:不将托管 URI 添加到 API 凭据中的授权 JavaScript 来源会给您错误:redirect_uri_mismatch)
如果您在 localhost 上运行它,请将端口更改为 5000,它将修复它