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。新项目可能不是必需的,但我保留(并使用)它。
这是有效的方法:
- 创建一个新项目
- 添加并启用分析 API
- 创建一个新的凭证 - 确保它是一个 OAUTH 凭证(滚动到本页底部以获取说明 https://developers.google.com/api-client-library/javascript/start/start-js#Setup)。
在创建凭据的过程中,您会看到一个名为“限制”的部分
输入 JavaScript 来源、重定向 URI 或两者。您可以在此处输入来源。
保存并复制您的客户端 ID(和密码)。
我的脚本在我创建新的 OAUTH 凭据、分配源并按照此过程使用新生成的客户端 ID 后工作。
对我来说 - 我刚去过这里:
https://console.developers.google.com/apis/credentials
然后选对了项目;然后选择与控制台错误消息中显示的 ID 相同的凭据。编辑凭据时,您可以将多个来源添加到白名单。
如果 API 未启用,凭据将不起作用。在我的例子中,需要接下来的步骤:
- 转到https://console.developers.google.com/apis/library
- 输入'People'
- 从结果中选择 'Google People API'
- 点击'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 控制台进行配置。
- Select https://console.cloud.google.com/
的项目
- 导航到凭据
- 单击相关 OAuth 2.0 客户端 ID 的编辑按钮
- 将 URI 添加到授权 JavaScript 来源
- 别忘了保存
清除 chrome 上的缓存有效!
请按照以下步骤清除缓存。
- 打开开发工具(右键单击页面并 select 检查/按 F12)
- 在打开开发工具时右键单击 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”
当向 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。新项目可能不是必需的,但我保留(并使用)它。
这是有效的方法:
- 创建一个新项目
- 添加并启用分析 API
- 创建一个新的凭证 - 确保它是一个 OAUTH 凭证(滚动到本页底部以获取说明 https://developers.google.com/api-client-library/javascript/start/start-js#Setup)。
在创建凭据的过程中,您会看到一个名为“限制”的部分 输入 JavaScript 来源、重定向 URI 或两者。您可以在此处输入来源。
保存并复制您的客户端 ID(和密码)。
我的脚本在我创建新的 OAUTH 凭据、分配源并按照此过程使用新生成的客户端 ID 后工作。
对我来说 - 我刚去过这里:
https://console.developers.google.com/apis/credentials
然后选对了项目;然后选择与控制台错误消息中显示的 ID 相同的凭据。编辑凭据时,您可以将多个来源添加到白名单。
如果 API 未启用,凭据将不起作用。在我的例子中,需要接下来的步骤:
- 转到https://console.developers.google.com/apis/library
- 输入'People'
- 从结果中选择 'Google People API'
- 点击'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 控制台进行配置。
- Select https://console.cloud.google.com/ 的项目
- 导航到凭据
- 单击相关 OAuth 2.0 客户端 ID 的编辑按钮
- 将 URI 添加到授权 JavaScript 来源
- 别忘了保存
清除 chrome 上的缓存有效!
请按照以下步骤清除缓存。
- 打开开发工具(右键单击页面并 select 检查/按 F12)
- 在打开开发工具时右键单击 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:
确保您的客户端 ID 没有“.apps.google.com”