Google oauth2中的invalid_client


87

我尝试制作一个用于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

但是,当我尝试使用以下网址测试帐户时:

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

它给出了invalid_client的结果。即使在oauth2操场上尝试,也会发生同样的失败

有人知道发生了什么吗?


8
我发现有时oauth2客户端ID无效。我不知道为什么,但是当我打开一个新帐户并再次创建客户ID时,它就可以工作了。
鲍勃

3
鲍勃(Bob)是对的,创建客户ID即可解决此问题
Gabo Esquivel 2014年

11
确保在复制/粘贴客户端ID时不包含尾随空格。那对我来说
真是个

1
对我来说,我重新生成了客户机密并使用了它。似乎api仍然不稳定。
穆罕默德·塔拉勒

Answers:


113

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

可以在您的项目的Google Developers Console的“同意”屏幕部分中设置产品名称。在左侧导航栏中的APIs&auth下查看,然后选择“同意”屏幕。您还需要在产品名称上方的框中设置您的电子邮件地址。


4
谢谢!!我收到错误“”错误:invalid_client。基于OAuth的认证客户端未发现“浪费几个小时今天这一点,但刚才更新的产品名称,哎,急,问题修正了错误。所以误导。
IANB

2
产品名称是什么?
Hubert OG 2014年

4
在同意屏幕中。你必须填写“产品名称”字段
富大号

2
这工作了。简而言之:设置“产品名称” “电子邮件地址”字段。
b_archer

2
谢谢!拯救了我的一天!我必须说,在所有社交提供商中,Google的文档和UI都更差。导航不便,令人不知所措。我几乎总是忘记如何转到项目配置页面大声笑。
tintinboss

69

从Google Web UI复制值之后,我有一个空格用于:

  • client_id
  • secret

两者都在开始结束时


2
这个问题仍然存在:P
Abhinay

1
即使单击API控制台中的“复制”按钮,也令人难以置信...您会认为Google的开发人员区域将对空格敏感!
Reisclef '16

这里也令人难以置信。删除字符串两侧的多余空格。然后,如果按照这里所说的做完之后仍然没有任何作用,请删除该应用程序/项目,然后再次重新创建它,因为可能存在缓存问题。
eigenfield '17

1
是的,问题仍然存在!!!哇靠。我省略了一个空格,直到重新检查才看到它。谢谢。
LukasS '17

1
该死!我看到了最后的空格并删除了它,但一开始并没有检查空格。
sulabh

41

修剪无论从前端和后端的空白client_idclient_secret。Google的复制按钮无法为您完成此操作。

在此处输入图片说明

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

在此处输入图片说明


3
您可能不应该在这样的答案中让客户机密暴露。
Fernando

1
@Fernando这是一个一次性帐户。
肖恩·卢汀

ew 让我担心在那里的肖恩(Shaun):D
费尔南多(Fernando)

3
您是如何进入此屏幕的?
安东尼·孔

2
“扔掉帐户”-不适用于Google,Google会跟踪您并将您曾经使用的所有帐户捆绑到“关联帐户”中。而且一旦Google禁止了其中一个帐户,整个捆绑包就会被阻止。只需在Reddit上搜索“ Google开发者帐户已终止” 。
亚历山大·法伯

16

在Google开发者控制台的同意屏幕中设置EMAIL ADDRESS和PRODUCT NAME,可以解决错误“错误:invalid_client。未找到OAuth客户端。” 为了我。


9

我的ID中有两次.apps.googleusercontent.com。

这是一个复制粘贴问题,“您的ID在这里”。apps.googleusercontent.com


5
我的两端都留有空白:/
Christian

谢谢克里斯。它帮助了我。
Kiran Pawar '18

7

在这个线程中,我找到了答案。

  1. 我去了谷歌控制台
  2. 生成一个新项目,进行刷新,因为在我的情况下,创建页面后没有重新加载
  3. 选择新项目
  4. 创建一个客户ID
  5. 用它来满足您的需求

谢谢大家:D


6

invalid_client也可以仅表示创建Oauth2对象时,您的客户端ID和客户端密码错误。


5

在我看来,这是另外一回事,即我的代码使用的环境变量设置不正确(我的代码愚蠢地没有检查)。设置它,重新编译资产并重新启动该应用程序就可以了。


1
同样在这里; 我已经设置好了,但是忘了重启终端了
quicklikerabbit

5

如果您遵循这些文档,请从此页面 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

4

我通过从clientID和clientSecret值中删除了不必要的引号来解决了这个问题。


您的先生/女士是一个传奇人物!我从Heroku环境变量中删除了引号。
grabury

2

错误是否还报告它缺少应用程序名称?在项目设置对话框中创建项目名称(例如“ Project X”)之前,我一直遇到这个问题。



1

我用trim解决了我的问题:

'google' => [
    'client_id' =>trim('client_id),
    'client_secret' => trim('client_secret'),
    'redirect' => 'http://localhost:8000/login/google/callback',
],


0

在凭据上接受来自这些HTTP引荐来源网址(网站)的请求(可选),对通配符使用星号。如果您将此留空,则任何引荐来源的请求都会被接受。在生产中使用此密钥之前,请确保添加引荐来源网址。添加(星点星)。对我来说很好


0

我不小心在URL的“客户端机密”部分输入了一个值,但是Google Credential不需要Android OAuth 2客户端ID的“客户端机密”。只需将URL中的值留空就可以了。


0

对我有用的步骤:

  1. 删除不适合您的凭据
  2. 使用一些NAME创建新的凭证
  3. 在OAuth同意屏幕上填写相同的名称
  4. 在OAuth同意屏幕上填写电子邮件地址

名称应完全相同。


0

另一件事要检查:

当您使用NuGet将GoogleAPI安装到.Net应用程序中时,它将在* .config文件中注入一组新的虚拟值。

检查所有原始值是否仍然存在,然后删除虚拟条目。


0

以下都不是我的问题-我通过打开隐身窗口解决了此问题。很明显,某些内容被缓存在某处,身份验证客户端设置的更改无济于事,并且配置值中从来没有尾随或前导空格。



0

我的没有用,因为我是通过文档中的按钮创建的。我再次进入该项目并创建了另一个OAuthClientID。有效。是的,请注意左右的多余空间。


0

为了获得最佳结果,请确保您具有完整的详细信息,如下所示:

{"client_id":"282324738-4labcgdsd4nlh34885s2d34tmi.apps.googleusercontent.com","project_id":"abcd23ss-212808","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://www.googleapis.com/oauth2/v3/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"23452-dfgdfgcdfgfd","redirect_uris":["http://localhost:6900/auth/google/callback"],"javascript_origins":["http://localhost:6900"]}

始终可以从https://console.developers.google.com/apis/credentials/oauthclient/将这些数据作为JSON下载。


0

如果您使用Meteor JS,则必须使用clientId而不是appId

由于facebook使用appId和google clientId。

ServiceConfiguration.configurations.upsert({
    service: "google"
}, {
    $set: {
        clientId: process.env.OAUTH_GOOGLE_APP_ID,
        loginStyle: "popup",
        secret: process.env.OAUTH_GOOGLE_SECRET
    }
});

我花了几个小时才意识到这一点。


0

我希望我以前看过这篇文章,因为有很多事情我必须找出反复试验的地方。这可能会出错。这是我遇到的另一个问题:

在指定授权Java脚本起源或授权重定向URI时,请确保包含带有和不带有www的域。因此https://google.comhttps://www.google.com

我还上传了一个应用程序徽标。因此,同意屏幕需要进行审查...这需要永远的时间。不要上传应用程序徽标,否则请耐心等待。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.