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"

我将我的网站列入白名单并被接受的问题。我不知道出了什么问题。我应该如何将我的域“列入白名单”(已列入白名单)

还有一个问题。我之前没有搜索过这个问题的答案。

我认为我可以在本地主机上使用代码,我认为我必须将我的本地主机地址或类似的地址列入白名单。但是白名单不起作用。

我遇到了完全相同的问题 - 我的解决方案是进入 API 管理器并启用分析 API。不确定是什么问题,但这似乎已解决!

遇到了同样的问题,我是这样解决的:

  1. 在您的项目上激活 Analytics 和 Google Plus API
  2. 创建新的 OAUTH 2.0 客户端凭据
    • 限制部分
    • 下添加授权Javascript来源
  3. 使用新的客户端 ID。

尽情享受吧。

我刚刚犯了同样的错误:尝试了 official quickstart example 并收到了与您相同的错误消息。

这相当令人困惑,因为该示例比我个人需要的要复杂得多:它使用 OAuth 进行用户登录,而不仅仅是 API key。如果你像我一样,不想使用 OAuth,只想检索一些 Youtube 数据,没有任何特权操作(例如,如果你只想搜索或列出视频、频道或播放列表),这个例子是给你。

解决方法很简单,只需要提供apiKey而不是clientIdgapi.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 以下是对我有用的方法:

  1. 启用分析API
  2. 返回给你凭据,删除以前的 OAuth 2.0
  3. 现在创建具有正确来源的新 OAuth

Create authorization credentials

任何使用 OAuth 2.0 访问 Google API 的应用程序都必须具有授权凭据,以向 Google 的 OAuth 2.0 服务器标识该应用程序。以下步骤说明了如何为您的项目创建凭据。然后,您的应用程序可以使用凭据访问您为该项目启用的 APIs。

  1. 转到 Credentials page
  2. 单击创建凭据 > OAuth 客户端 身份证.
  3. Select Web 应用程序应用类型。
  4. 填写表格。使用 JavaScript 发出授权 Google API 请求的应用程序必须指定 授权 JavaScript 来源 。来源标识您的应用程序可以从中向 OAuth 2.0 服务器发送请求的域。

使用以下最新方法更新客户端的有效来源:

  1. 转到https://console.developers.google.com/
  2. 单击 ENABLE APIS 和 SERVICES link
  3. 添加 Google 分析 API 和 return 主页。
  4. 您可以在主页看到 API 添加的列表,如下图所示
  5. 单击左侧菜单中的凭据link
  6. 单击 OAuth 客户端,如果它不可用,请使用 CREATE CREDENTIAL 按钮创建
  7. 添加 授权 javascript 来源 link 如下所示。
  8. 最后点击保存按钮
  9. 然后,在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) {...}
...

以下对我有用

  1. 将您的来源添加到您的 OAuth 2.0 客户端 ID
  2. 复制并导航到您在开发工具中看到的失败的 HTTP 请求,例如https://accounts.google.com/o/oauth2/iframerpc?action=checkOrigin...
  3. 清除该域的 cookie 和本地存储(EditThisCookie & localStorage.clear()
  4. 等待大约 30 分钟
  5. URL应该return{ "valid": true }