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

0

请在 Google APIs 控制台上检查您的项目名称。 选择您创建的另一个项目。 我遇到了同样的错误。 我的错误是选择了不同的项目。


0

这可能也是由于没有使用 https URL。

换句话说,这仅适用于 https。仅在 localhost 中使用 http


0
我找到的解决办法是在.env文件中删除单引号'并移除客户端ID和密钥末尾的额外空格。

0

需要检查的另一件事情:

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

请确保任何原始值仍然存在,并删除虚拟条目。


0

真希望我在看到这篇文章之前就已经了解了,因为有很多事情我只能通过试错来找出。这里还有一个问题:

当您指定授权的JavaScript来源或授权的重定向URI时,请确保包括您的域名和不带www的域名。所以https://google.comhttps://www.google.com

此外,我上传了一个应用程序标志。因此,同意屏幕需要审核...这需要很长时间。不要上传应用程序标志,或者要非常耐心。


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
    }
});

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


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