谷歌OAuth2中的invalid_client

97

我正在尝试制作一个用于上传 YouTube 视频的网页,因此我尝试从 Google API 控制台获取客户端 ID,在 API 控制台中显示如下:

Client ID: 533832195920.apps.googleusercontent.com
Redirect URIs: http://bobyouku.ap01.aws.af.cm/testyoutube.php
https://developers.google.com/oauthplayground

然而,当我尝试使用以下URL测试我的帐户时:

https://accounts.google.com/o/oauth2/auth?client_id=533832195920.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Fbobyouku.ap01.aws.af.cm%2Ftestyoutube.php&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube&response_type=code&access_type=offline

它返回无效的客户端结果。即使在oauth2 playground上尝试,也会发生同样的失败。

所以有人知道发生了什么吗?


9
有时候我发现OAuth2客户端ID无法使用。我不知道为什么,但当我打开一个新账号并重新创建客户端ID时它就可以使用了。 - Bob
3
鲍勃是正确的,创建客户端 ID 可以解决这个问题。 - Gabo Esquivel
13
请确保在复制客户端 ID 时不要包含尾随空格。这对我很有帮助... - andig
2
对我来说,我重新生成了客户端密钥并使用它,这样就可以工作了。似乎API仍然不稳定。 - Muhammad Talal
26个回答

115

设置/更改产品名称,我曾经遇到过这个问题,直到我创建了一个与项目名称相同的产品名称。

产品名称可以在您的项目的Google开发者控制台中的“Consent screen”部分设置。在左侧导航栏下选择“API和权限”,然后选择“Consent screen”。 您还需要在产品名称上方的框中设置您的电子邮件地址。


5
谢谢!我遇到了一个错误:“错误:invalid_client。找不到OAuth客户端。”今天浪费了几个小时,但现在刚刚更新了产品名称,问题解决了。那个错误信息实在是太误导人了。 - IanB
2
产品名称是什么? - Hubert OG
4
在同意屏幕上,你需要填写“产品名称”字段。 - Foo L
2
这个方法有效。简单来说,设置'产品名称'和'电子邮件地址'两个字段。 - b_archer
5
谢谢!你救了我的一天!我必须要说,在所有社交媒体提供商中,Google的文档和用户界面最糟糕。这太令人不知所措和混乱,加上他们糟糕的导航。我几乎总是忘记如何前往项目配置页面 lol。 - tintinboss
显示剩余3条评论

75

从Google的Web UI复制值后,我需要以下部分的空格:

  • client_id
  • secret

且两者开头和结尾都有空格。

即使点击“复制”按钮也会出现此问题。


2
这个问题仍然存在 :P - Abhinay
2
难以置信,即使在API控制台中点击“复制”按钮...你会认为Google的开发人员区域会对空格敏感! - Reisclef
1
是的,问题仍然存在!!!天哪。我漏掉了一个空格,直到重新检查才发现。谢谢。 - LukasS
1
糟糕!我看到末尾的空格并将其删除,但没有检查开头的空格。 - sulabh
这为什么没有被报告?我应该在哪里报告这些问题?! - Braiam
显示剩余2条评论

42

client_idclient_secret中删除前导和尾随的空格。谷歌的复制按钮不会为您执行此操作。

enter image description here

在OAuth同意屏幕上设置电子邮件地址和产品名称字段。

enter image description here


3
你可能不应该在回答中暴露你的客户机密。 - Fernando
1
@Fernando 这是一个一次性账户。 - Shaun Luttin
3
你是如何来到这个屏幕的? - Anthony Kong
2
“Throw away account” - 不要用谷歌,因为它会跟踪你并捆绑所有你曾经使用过的帐户到“关联帐户”。一旦谷歌封禁其中一个帐户,整个捆绑帐户都将被封锁。只需在Reddit上搜索“谷歌开发者帐户终止”即可了解详情。 - Alexander Farber
1
@ShaunLuttin 你知道你的数据仍然可以在答案编辑历史中看到吗?只是提醒一下。 - Mark
显示剩余3条评论

16
在Google开发者控制台的同意屏幕中设置电子邮件地址和产品名称可以解决“错误:invalid_client. 未找到OAuth客户端”的问题。

9

我的 ID 中出现了两次 .apps.googleusercontent.com。

这是一个复制粘贴问题,“Your ID HERE”.apps.googleusercontent.com。


5
我的那一端是留下了一个空白:/ - Christian

8

invalid_client也可以简单地意味着在创建您的Oauth2对象时您的客户端ID和客户端密钥是错误的。


7

在这个帖子中,我找到了我的答案。

  1. 我进入了Google控制台,
  2. 生成了一个新项目,并进行了刷新,因为在我的情况下,创建页面后没有重新加载。
  3. 选择新项目
  4. 创建客户端ID
  5. 将其用于您需要的任何内容

谢谢大家 :D


6

如果您按照文档从这个页面https://developers.google.com/identity/sign-in/web/sign-in#specify_your_apps_client_id进行操作,

您将会看到:

<meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com">

但是它是错误的。它应该是


<meta name="google-signin-client_id" content="YOUR_CLIENT_ID">

问题在于'.apps.googleusercontent.com'仍会被添加。如果按照文档所述操作,将会出现两次'.apps.googleusercontent.com'。

非常感谢。按照您的建议进行更改解决了问题。 - Pavan Dittakavi
你是对的!它按照你所说的工作了。 - Ugur Catak

6

在我的情况下,问题实际上是其他的原因,即我的代码使用了一个环境变量,但该变量没有被正确设置(而且愚蠢的是没有被我的代码检查)。设置它,重新编译资源并重新启动应用程序就可以解决问题。


1
我也是;我已经设置了,但忘记重新启动我的终端。 - quicklikerabbit
我将我的批处理文件从 set MY_ENV_VAR='a string' 更新为 set MY_ENV_VAR=a string,错误消失了。环境变量中多余的引号字符串被解析为字符串本身的一部分。 - OXiGEN

5
我通过删除客户端ID和客户端密钥值中的不必要引号来解决了这个问题。

您是个传奇!我从我的Heroku环境变量中删除了引号。 - grabury

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接