谷歌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个回答

2

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


2

可能旧的凭证已失效

请参见下面的答案

stackoverflow答案

或者使用短名称也可以

请参见下面的答案 stackoverflow答案

或者产品名称与项目名称相同,如已回答

有时候会在中间加入额外的空格

请检查这行文字两次,以确保您被重定向到正确的URL


1

以下都不是我的问题 - 我通过打开一个无痕窗口解决了这个问题。显然某处进行了缓存,无论如何更改身份验证客户端设置都没有帮助,并且配置值中从未有任何尾随或前导空格。


1

我使用 trim 方法解决了我的问题:

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

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

我不小心在URL的客户端密钥部分放了一个值,但是Google凭据对于Android OAuth 2客户端ID不需要客户端密钥。在URL中留空即可解决问题。


0

在凭据中,接受来自这些HTTP引用者(网站)的请求(可选)使用星号作为通配符。如果留空,则将接受来自任何引用者的请求。在生产中使用此键之前,请确保添加引用者。添加 “.” (星点星)。这对我很有效。


0

对我有效的步骤:

  1. 删除无法使用的凭据
  2. 创建一个带有某个名称的新凭据
  3. 在您的OAuth同意屏幕上填写相同的名称
  4. 在OAuth同意屏幕上填写电子邮件地址

名称应该完全相同。


0

我的没有工作,因为我是从文档中的按钮创建它的。我又回到项目中创建了另一个OAuthClientID。这次成功了。是的,也要注意右侧和左侧的额外空格。


0

删除客户端 ID 并重新创建几次对我有用。


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