Google API:客户端的来源无效:url 尚未列入客户端 ID "ID" 的白名单
Google API: Not a valid origin for the client: url has not been whitelisted for client ID "ID"
我需要帮助。我没有找到问题的答案。我尝试使用谷歌搜索并尝试询问其他方面,但我从未找到答案。
我正在使用 google API(Youtube 数据 API),我使用 google 端的示例代码,它可以正常工作我'我很确定这一点。当我尝试启动脚本时出现错误:
details: "Not a valid origin for the client: "MyURL" has not been whitelisted for client ID "MyID". Please go to https://console.developers.google.com/ and whitelist this origin for your project's client ID."
error: "idpiframe_initialization_failed"
我将我的网站列入白名单并被接受的问题。我不知道出了什么问题。我应该如何将我的域“列入白名单”(已列入白名单)
还有一个问题。我之前没有搜索过这个问题的答案。
我认为我可以在本地主机上使用代码,我认为我必须将我的本地主机地址或类似的地址列入白名单。但是白名单不起作用。
- DreamGamer
我遇到了完全相同的问题 - 我的解决方案是进入 API 管理器并启用分析 API。不确定是什么问题,但这似乎已解决!
遇到了同样的问题,我是这样解决的:
- 在您的项目上激活 Analytics 和 Google Plus API
- 创建新的 OAUTH 2.0 客户端凭据
- 在限制部分
下添加授权Javascript来源
- 使用新的客户端 ID。
尽情享受吧。
我刚刚犯了同样的错误:尝试了 official quickstart example 并收到了与您相同的错误消息。
这相当令人困惑,因为该示例比我个人需要的要复杂得多:它使用 OAuth 进行用户登录,而不仅仅是 API key
。如果你像我一样,不想使用 OAuth,只想检索一些 Youtube 数据,没有任何特权操作(例如,如果你只想搜索或列出视频、频道或播放列表),这个例子是给你。
解决方法很简单,只需要提供apiKey
而不是clientId
给gapi.client.init
(link:API docs),像这样:
const apiKey = '<my API key>';
function gooApiInitClient() {
// Array of API discovery doc URLs for APIs used by the quickstart
const discoveryDocs = [
"https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest"
];
return gapi.client.init({
apiKey,
discoveryDocs
});
}
// see: https://developers.google.com/api-client-library/javascript/reference/referencedocs
gapi.load('client', {
callback: function() {
// we now have gapi.client! initialize it.
gooApiInitClient().
then(() => {
// we can start using the API here!
// e.g. gapi.client.youtube.videos.list(...);
}).then(results => {
// use results here....
});
}
});
我清除了缓存。然后就开始工作了。
在Chrome中:设置 --> 高级 --> 清除浏览数据 --> 缓存的图像和文件
尝试清除缓存,这可能是 cache/localstorage 的问题。
我认为这与缓存有关,尝试转到您的浏览器并清除缓存,尝试:在 chrome,> 设置 > 高级 > 清除浏览数据 :>:缓存的图像和文件。
对我来说,它在不添加任何额外的 API(例如 google 分析)的情况下工作。只需确保添加完整的 clientid 并在隐身 window 中打开应用程序以避免保存缓存。如果已经正常打开应用 window,
1-关闭应用程序打开的所有选项卡。
2- 清除缓存和 cookie。在 chrome 中,它位于设置 --> 密码和表单 -> 清除浏览数据 -> 高级(选项卡)-> select a) Cookie 和其他站点数据以及 b) 缓存的图像和文件
3- 打开一个新的隐身模式 window 并测试您的应用。
清除缓存对我有用
我也按照快速入门示例中的说明进行操作,遇到了同样的问题,尝试了此处建议的所有解决方案均无济于事,尝试了我能想到的所有方法,但没有帮助。
终于看到我把CLIENT_ID
复制到最后一个space
var CLIENT_ID = '44********-*****************.apps.googleusercontent.com ';
一旦我解决了这个问题(删除了额外的 space),它就起作用了。
我想在这种情况下错误信息不是很准确。
希望这有帮助。
无法工作的原因之一是在某些 client ID
.
上登录次数超过 (100)
您可以访问 google API console page 并创建新的 Oauth2 客户端凭据(记得在 Authorized Javascript Origins
下添加您的应用程序 URL)然后使用它。
我也遇到了同样的问题,直到我在复制 client_ID 时意识到我的文件中有白色 space,所以我从文件中删除了白色 space字符串,现在一切正常。
我在尝试为我的网络应用获取登录时遇到了类似的问题。我所做的只是从云平台重新创建 OAuth 客户端 ID 凭据。当我这样做并使用新的客户端 ID 时,一切正常。不确定之前是什么问题,但现在一切正常。
如果有人从 Google 或诸如此类的地方找到这个,试试看。它可能只是工作。它可以解释 Ezra Obiwale 的回答,因为这实际上是在添加几个 API 之后创建一个新的客户端 ID。
如果有人知道为什么会发生这种情况,我们将不胜感激。
我在使用本地主机上的 react-social-login 进行 google 登录时遇到了同样的问题。在白名单来源中,我们必须提供 http://localhost:3000 才能使其正常工作。
我也试图让示例工作(来自 )https://developers.google.com/drive/api/v3/quickstart/js
即使将 ip 地址添加到 WebAPI,它仍然失败。
但是您必须将 localhost:8000(不仅仅是 127.0.0.1:8000)添加到您的 OAUTH,如下所示:
浮动在 OAUTH 客户端文本上,它将变成 link。单击 link,您可以添加一个包含端口的 URI。我的已经有 127.0.0.1:8000 但没有 locahost:8000.
这是有趣/奇怪的事情。当我 ping 本地主机时,我看到:
我认为那是 IPV6 的事情。
无论如何,如果我 ping 127.0.0.1,我会看到预期的响应(通过 IPV4)
也许这是一个转移注意力的问题,但我不确定 OAUTH 中输入的值是否受其影响。
我什至注意到这一点的原因是,当我按照教程中的指示启动 Python 网络服务器时,我看到以下内容并认为这很奇怪:
只有在 OAUTH 中添加 localhost:8000 URI 后它才起作用,但添加后它确实起作用了。
正如许多人在这里指出的那样,这只是一个浏览器缓存问题。无需创建新密钥,甚至无需清除缓存。只需在新的隐身浏览器(匿名)上重试 window,它应该可以正常工作。
文档说不要忽略两个关键步骤(“在您完成说明时,请务必不要忽略这两个关键步骤:启用 Analytics API
以下是对我有用的方法:
- 启用分析API
- 返回给你凭据,删除以前的 OAuth 2.0
- 现在创建具有正确来源的新 OAuth
Create authorization credentials
任何使用 OAuth 2.0 访问 Google API 的应用程序都必须具有授权凭据,以向 Google 的 OAuth 2.0 服务器标识该应用程序。以下步骤说明了如何为您的项目创建凭据。然后,您的应用程序可以使用凭据访问您为该项目启用的 APIs。
- 转到 Credentials page。
- 单击创建凭据 > OAuth 客户端
身份证.
- Select Web 应用程序应用类型。
- 填写表格。使用 JavaScript 发出授权 Google API 请求的应用程序必须指定 授权 JavaScript 来源 。来源标识您的应用程序可以从中向 OAuth 2.0 服务器发送请求的域。
使用以下最新方法更新客户端的有效来源:
- 转到https://console.developers.google.com/
- 单击 ENABLE APIS 和 SERVICES link
- 添加 Google 分析 API 和 return 主页。
- 您可以在主页看到 API 添加的列表,如下图所示
- 单击左侧菜单中的凭据link
- 单击 OAuth 客户端,如果它不可用,请使用 CREATE CREDENTIAL 按钮创建
- 添加 授权 javascript 来源 link 如下所示。
- 最后点击保存按钮
- 然后,在Chrome中:
Settings --> Advanced --> Clear browsing data --> Cached images and files
(为了避免旧缓存造成跨源问题)。
希望对大家有所帮助
一次点击 Google chrome 身份验证没有向我的所有域显示所以
我关注这本书:
https://developers.google.com/identity/one-tap/web/guides/features
这个问题的总结说:
add all your domains and sub domains in:
https://console.developers.google.com/apis/credentials
Edit or create a:
OAuth 2.0 Client IDs ->
Web client (auto created by Google Service) (Edit this line)
在此处添加域和子域:
Authorized JavaScript origins
URIs
在此之后,一键登录开始显示已登录用户在 chrome 浏览器上注册的帐户。
<script src="https://apis.google.com/js/platform.js" async defer></script>
脚本必须在标签中 <head></head>
在我的例子中,我在标签 </main>
之后放置,所以它失败了。然后我尝试在标签 <head>
中写入,成功了!
===
正确的是
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<meta name="google-signin-client_id" content="APP_CODE.apps.googleusercontent.com">
<script src="https://apis.google.com/js/platform.js" async defer></script>
</head>
<body>
<main>
<div class="g-signin2" data-onsuccess="onSignIn"></div>
</main>
<script>
function onSignIn(googleUser) {...}
...
以下对我有用
- 将您的来源添加到您的 OAuth 2.0 客户端 ID
- 复制并导航到您在开发工具中看到的失败的 HTTP 请求,例如
https://accounts.google.com/o/oauth2/iframerpc?action=checkOrigin...
- 清除该域的 cookie 和本地存储(EditThisCookie &
localStorage.clear()
)
- 等待大约 30 分钟
- URL应该return
{ "valid": true }
我需要帮助。我没有找到问题的答案。我尝试使用谷歌搜索并尝试询问其他方面,但我从未找到答案。
我正在使用 google API(Youtube 数据 API),我使用 google 端的示例代码,它可以正常工作我'我很确定这一点。当我尝试启动脚本时出现错误:
details: "Not a valid origin for the client: "MyURL" has not been whitelisted for client ID "MyID". Please go to https://console.developers.google.com/ and whitelist this origin for your project's client ID."
error: "idpiframe_initialization_failed"
我将我的网站列入白名单并被接受的问题。我不知道出了什么问题。我应该如何将我的域“列入白名单”(已列入白名单)
还有一个问题。我之前没有搜索过这个问题的答案。
我认为我可以在本地主机上使用代码,我认为我必须将我的本地主机地址或类似的地址列入白名单。但是白名单不起作用。
- DreamGamer
我遇到了完全相同的问题 - 我的解决方案是进入 API 管理器并启用分析 API。不确定是什么问题,但这似乎已解决!
遇到了同样的问题,我是这样解决的:
- 在您的项目上激活 Analytics 和 Google Plus API
- 创建新的 OAUTH 2.0 客户端凭据
- 在限制部分 下添加授权Javascript来源
- 使用新的客户端 ID。
尽情享受吧。
我刚刚犯了同样的错误:尝试了 official quickstart example 并收到了与您相同的错误消息。
这相当令人困惑,因为该示例比我个人需要的要复杂得多:它使用 OAuth 进行用户登录,而不仅仅是 API key
。如果你像我一样,不想使用 OAuth,只想检索一些 Youtube 数据,没有任何特权操作(例如,如果你只想搜索或列出视频、频道或播放列表),这个例子是给你。
解决方法很简单,只需要提供apiKey
而不是clientId
给gapi.client.init
(link:API docs),像这样:
const apiKey = '<my API key>';
function gooApiInitClient() {
// Array of API discovery doc URLs for APIs used by the quickstart
const discoveryDocs = [
"https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest"
];
return gapi.client.init({
apiKey,
discoveryDocs
});
}
// see: https://developers.google.com/api-client-library/javascript/reference/referencedocs
gapi.load('client', {
callback: function() {
// we now have gapi.client! initialize it.
gooApiInitClient().
then(() => {
// we can start using the API here!
// e.g. gapi.client.youtube.videos.list(...);
}).then(results => {
// use results here....
});
}
});
我清除了缓存。然后就开始工作了。
在Chrome中:设置 --> 高级 --> 清除浏览数据 --> 缓存的图像和文件
尝试清除缓存,这可能是 cache/localstorage 的问题。
我认为这与缓存有关,尝试转到您的浏览器并清除缓存,尝试:在 chrome,> 设置 > 高级 > 清除浏览数据 :>:缓存的图像和文件。
对我来说,它在不添加任何额外的 API(例如 google 分析)的情况下工作。只需确保添加完整的 clientid 并在隐身 window 中打开应用程序以避免保存缓存。如果已经正常打开应用 window, 1-关闭应用程序打开的所有选项卡。 2- 清除缓存和 cookie。在 chrome 中,它位于设置 --> 密码和表单 -> 清除浏览数据 -> 高级(选项卡)-> select a) Cookie 和其他站点数据以及 b) 缓存的图像和文件 3- 打开一个新的隐身模式 window 并测试您的应用。
清除缓存对我有用
我也按照快速入门示例中的说明进行操作,遇到了同样的问题,尝试了此处建议的所有解决方案均无济于事,尝试了我能想到的所有方法,但没有帮助。
终于看到我把CLIENT_ID
复制到最后一个space
var CLIENT_ID = '44********-*****************.apps.googleusercontent.com ';
一旦我解决了这个问题(删除了额外的 space),它就起作用了。
我想在这种情况下错误信息不是很准确。 希望这有帮助。
无法工作的原因之一是在某些 client ID
.
您可以访问 google API console page 并创建新的 Oauth2 客户端凭据(记得在 Authorized Javascript Origins
下添加您的应用程序 URL)然后使用它。
我也遇到了同样的问题,直到我在复制 client_ID 时意识到我的文件中有白色 space,所以我从文件中删除了白色 space字符串,现在一切正常。
我在尝试为我的网络应用获取登录时遇到了类似的问题。我所做的只是从云平台重新创建 OAuth 客户端 ID 凭据。当我这样做并使用新的客户端 ID 时,一切正常。不确定之前是什么问题,但现在一切正常。
如果有人从 Google 或诸如此类的地方找到这个,试试看。它可能只是工作。它可以解释 Ezra Obiwale 的回答,因为这实际上是在添加几个 API 之后创建一个新的客户端 ID。
如果有人知道为什么会发生这种情况,我们将不胜感激。
我在使用本地主机上的 react-social-login 进行 google 登录时遇到了同样的问题。在白名单来源中,我们必须提供 http://localhost:3000 才能使其正常工作。
我也试图让示例工作(来自 )https://developers.google.com/drive/api/v3/quickstart/js
即使将 ip 地址添加到 WebAPI,它仍然失败。
但是您必须将 localhost:8000(不仅仅是 127.0.0.1:8000)添加到您的 OAUTH,如下所示:
浮动在 OAUTH 客户端文本上,它将变成 link。单击 link,您可以添加一个包含端口的 URI。我的已经有 127.0.0.1:8000 但没有 locahost:8000.
这是有趣/奇怪的事情。当我 ping 本地主机时,我看到:
我认为那是 IPV6 的事情。
无论如何,如果我 ping 127.0.0.1,我会看到预期的响应(通过 IPV4)
也许这是一个转移注意力的问题,但我不确定 OAUTH 中输入的值是否受其影响。
我什至注意到这一点的原因是,当我按照教程中的指示启动 Python 网络服务器时,我看到以下内容并认为这很奇怪:
只有在 OAUTH 中添加 localhost:8000 URI 后它才起作用,但添加后它确实起作用了。
正如许多人在这里指出的那样,这只是一个浏览器缓存问题。无需创建新密钥,甚至无需清除缓存。只需在新的隐身浏览器(匿名)上重试 window,它应该可以正常工作。
文档说不要忽略两个关键步骤(“在您完成说明时,请务必不要忽略这两个关键步骤:启用 Analytics API 以下是对我有用的方法:
- 启用分析API
- 返回给你凭据,删除以前的 OAuth 2.0
- 现在创建具有正确来源的新 OAuth
Create authorization credentials
任何使用 OAuth 2.0 访问 Google API 的应用程序都必须具有授权凭据,以向 Google 的 OAuth 2.0 服务器标识该应用程序。以下步骤说明了如何为您的项目创建凭据。然后,您的应用程序可以使用凭据访问您为该项目启用的 APIs。
- 转到 Credentials page。
- 单击创建凭据 > OAuth 客户端 身份证.
- Select Web 应用程序应用类型。
- 填写表格。使用 JavaScript 发出授权 Google API 请求的应用程序必须指定 授权 JavaScript 来源 。来源标识您的应用程序可以从中向 OAuth 2.0 服务器发送请求的域。
使用以下最新方法更新客户端的有效来源:
- 转到https://console.developers.google.com/
- 单击 ENABLE APIS 和 SERVICES link
- 添加 Google 分析 API 和 return 主页。
- 您可以在主页看到 API 添加的列表,如下图所示
- 单击左侧菜单中的凭据link
- 单击 OAuth 客户端,如果它不可用,请使用 CREATE CREDENTIAL 按钮创建
- 添加 授权 javascript 来源 link 如下所示。
- 最后点击保存按钮
- 然后,在Chrome中:
Settings --> Advanced --> Clear browsing data --> Cached images and files
(为了避免旧缓存造成跨源问题)。
希望对大家有所帮助
一次点击 Google chrome 身份验证没有向我的所有域显示所以
我关注这本书:
https://developers.google.com/identity/one-tap/web/guides/features
这个问题的总结说:
add all your domains and sub domains in: https://console.developers.google.com/apis/credentials Edit or create a:
OAuth 2.0 Client IDs ->
Web client (auto created by Google Service) (Edit this line)
在此处添加域和子域:
Authorized JavaScript origins
URIs
在此之后,一键登录开始显示已登录用户在 chrome 浏览器上注册的帐户。
<script src="https://apis.google.com/js/platform.js" async defer></script>
脚本必须在标签中 <head></head>
在我的例子中,我在标签 </main>
之后放置,所以它失败了。然后我尝试在标签 <head>
中写入,成功了!
=== 正确的是
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<meta name="google-signin-client_id" content="APP_CODE.apps.googleusercontent.com">
<script src="https://apis.google.com/js/platform.js" async defer></script>
</head>
<body>
<main>
<div class="g-signin2" data-onsuccess="onSignIn"></div>
</main>
<script>
function onSignIn(googleUser) {...}
...
以下对我有用
- 将您的来源添加到您的 OAuth 2.0 客户端 ID
- 复制并导航到您在开发工具中看到的失败的 HTTP 请求,例如
https://accounts.google.com/o/oauth2/iframerpc?action=checkOrigin...
- 清除该域的 cookie 和本地存储(EditThisCookie &
localStorage.clear()
) - 等待大约 30 分钟
- URL应该return
{ "valid": true }