Google API:不是客户的有效来源:url尚未列入客户ID ID“白名单”

时间:2017-05-14 13:39:46

标签: google-api youtube-data-api whitelist

我需要帮助。我没有找到我的问题的答案。我试着谷歌搜索,我试着在另一边问,但我从来没有找到答案。

我正在使用谷歌API(Youtube数据API),我使用谷歌方面的示例代码,它使用的代码我非常肯定。我尝试启动脚本时遇到错误:

  

详细信息:“不是客户的有效来源:”MyURL“尚未列入客户ID”MyID“的白名单。请转到https://console.developers.google.com/并将此来源列入白名单以获取项目的客户ID。”

     

错误:“idpiframe_initialization_failed”

问题我将我的网站列入白名单并且已被接受。我不知道出了什么问题。我该怎么办才能将我的域名“列入白名单”(白名单)

另一个问题。我之前没有在这个问题上寻找答案。

我认为我可以使用Localhost上的代码,我想我必须将我的localhost地址或类似内容列入白名单。但白名单不起作用。

  • DreamGamer

20 个答案:

答案 0 :(得分:99)

我清除了缓存。那时就开始工作了。

在Chrome中:设置 - >高级 - >清除浏览数据 - >缓存的图像和文件

答案 1 :(得分:40)

遇到同样的问题,以及我如何解决它:

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

答案 2 :(得分:4)

文档说不要忽略两个关键步骤(“在按照说明进行操作时,请不要忽略这两个关键步骤,这一点很重要:启用Analytics API 这是对我有用的东西:

  1. 启用Analytics API
  2. 返回您的凭据,删除以前的OAuth 2.0
  3. 现在使用正确的来源创建新的OAuth

答案 3 :(得分:3)

尝试清除缓存,可能是缓存/本地存储问题。

答案 4 :(得分:3)

对我来说,它无需添加任何其他API(例如Google Analytics(分析))即可工作。只需确保添加完整的clientid并在隐身窗口中打开该应用程序即可避免保存缓存。如果已经在常规窗口中打开了该应用, 1-关闭打开应用程序的所有选项卡。 2-清除缓存和cookie。在chrome中,其位于设置->密码和表单->清除浏览数据->高级(标签)->选择a)Cookie和其他网站数据,以及b)缓存的图像和文件 3-打开一个新的隐身窗口并测试您的应用。

答案 5 :(得分:2)

清除缓存对我来说很成功

答案 6 :(得分:2)

正如许多人在这里指出的那样,这只是浏览器缓存问题。无需创建新密钥,甚至无需清除缓存。只需在新的浏览器隐身(匿名)窗口上重试,它就可以正常工作。

答案 7 :(得分:2)

我还试图让示例工作(来自)https://developers.google.com/drive/api/v3/quickstart/js

即使ip地址已添加到WebAPI,它仍然连续失败。

但是您必须将localhost:8000(而不仅仅是127.0.0.1:8000)添加到OAUTH中,如下所示:

OAUTH client

浮动在OAUTH客户端文本上,它将成为一个链接。单击该链接,您可以添加包括端口在内的URI。我的已经有127.0.0.1:8000,但没有locahost:8000。

locahost:8000

这是有趣/奇怪的事情。当我ping localhost时,我看到:

IPV6

我认为这是IPV6。

无论如何,如果我ping 127.0.0.1,我会看到预期的响应(通过IPV4)

IPV4

也许这是一条红色的鲱鱼,但是我不确定在OAUTH中输入的值是否受到它的影响。

我什至注意到的原因是,当我按照教程中的说明启动Python Web服务器时,我看到了以下内容,并认为这很奇怪: python ip address

只有在OAUTH中添加了localhost:8000 URI后,它才能正常工作,但是在添加后,它确实可以正常工作。

答案 8 :(得分:1)

<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) {...}
...

答案 9 :(得分:1)

Create authorization credentials

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

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

答案 10 :(得分:1)

我在尝试获取Web应用程序登录时遇到类似的问题。我所做的只是从Cloud Platform重新创建OAuth客户端ID凭据。当我这样做并使用新的Client ID时,一切正常。不知道以前是什么问题,但现在一切顺利。

如果有人从Google或其他地方找到此邮件,请尝试。它可能会起作用。它将解释Ezra Obiwale的答案,因为这实际上是在添加几个API之后创建一个新的Client ID。

如果有人知道为什么会发生这种情况的解释,将不胜感激。

答案 11 :(得分:1)

我还按照快速入门示例中的说明进行操作,遇到了相同的问题,尝试了此处建议的所有解决方案,都尝试了我能想象的一切,但没有帮助。

最后看到我复制了CLIENT_ID,并在末尾加了空格。

  var CLIENT_ID = '44********-*****************.apps.googleusercontent.com ';

一旦我修复了这个问题(删除了多余的空间),它就起作用了。

我猜这种情况下错误消息不是很准确。 希望这会有所帮助。

答案 12 :(得分:0)

在本地主机上使用react-social-login进行Google登录时,我遇到了同样的问题。在白名单来源中,我们必须提供http://localhost:3000才能使其正常工作。

答案 13 :(得分:0)

在某些client ID上,登录数超过了(100),因此无法正常工作。

您可以访问google API console page并创建新的Oauth2客户端凭据(记住要在Authorized Javascript Origins下添加应用程序URL),然后使用它。

答案 14 :(得分:0)

我认为这与缓存有关,尝试转到浏览器并清除缓存,尝试:在chrome中,&gt;设置&gt;高级&gt;清除浏览数据:&gt;:缓存的图像和文件。

答案 15 :(得分:0)

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

这是相当令人困惑的,因为该示例是使用OAuth进行用户登录的完整示例,而不仅仅是API key。如果您不想使用OAuth,并且您只想检索一些Youtube数据,而没有任何特权操作(例如,如果您只想搜索或列出视频,频道或播放列表),则此示例适合您。

解决方案很简单,只需向apiKey提供clientId而不是gapi.client.init(链接: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....
      });
  }
});

答案 16 :(得分:0)

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

  1. 转到https://console.developers.google.com/
  2. 点击启用 APIS 和服务链接 enter image description here
  3. 添加 Google Analytics API 并返回主页。
  4. 您可以看到在主页中添加的 API 列表,如下图所示 enter image description here
  5. 点击左侧菜单中的凭据链接
  6. 点击 OAuth 客户端,如果它不可用,请使用 CREATE CREDENTIAL 按钮创建 enter image description here
  7. 添加授权的javascript来源链接,如下所示。 enter image description here
  8. 最后点击保存按钮
  9. 然后,在 Chrome 中:Settings --> Advanced --> Clear browsing data --> Cached images and files(为了避免旧缓存生成跨源问题)

希望对大家有所帮助

答案 17 :(得分:0)

一键 Google chrome 身份验证不会显示给我的所有域,所以

我关注这本书:

https://developers.google.com/identity/one-tap/web/guides/features

这个问题的摘要:

<块引用>

将您的所有域和子域添加到: https://console.developers.google.com/apis/credentials 编辑或创建:

OAuth 2.0 客户端 ID ->

Web 客户端(由 Google 服务自动创建)(编辑此行)

在此处添加域和子项:

<块引用>

授权的 JavaScript 来源

URI

此后,登录用户的 Chrome 浏览器上注册的帐户开始显示一键登录。

答案 18 :(得分:0)

我遇到了同样的问题 - 我的解决方案是进入API管理器并启用Analytics API。不知道问题是什么,但这似乎已经解决了!

答案 19 :(得分:-1)

我也遇到了同样的问题,直到我意识到当我复制client_ID时,我的文件中有空白,所以我从字符串中删除了空白,并且现在一切正常。