谷歌 oauth2 中的 invalid_client

Posted

技术标签:

【中文标题】谷歌 oauth2 中的 invalid_client【英文标题】:invalid_client in google oauth2 【发布时间】:2013-06-14 13:08:53 【问题描述】:

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

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

那么有人知道发生了什么吗?

【问题讨论】:

我发现有时 oauth2 客户端 id 不起作用。我不知道为什么,但是当我打开一个新帐户并再次创建客户端 ID 时,它就可以工作了。 Bob 是对的,创建客户端 ID 解决了这个问题 确保在复制/粘贴客户端 ID 时不包含尾随空格。这对我有用... 对我来说,我重新生成了客户端密码并使用它工作。似乎api仍然不稳定。 【参考方案1】:

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

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

【讨论】:

谢谢!!我收到错误“”错误:invalid_client.找不到 OAuth 客户端。”今天浪费了几个小时,但刚刚更新了产品名称,嘿-presto,问题已解决。该错误如此具有误导性。 产品名称是什么? 它在同意屏幕中。您必须填写“产品名称”字段 这行得通。简而言之:设置“产品名称”“电子邮件地址”字段。 谢谢!拯救了我的一天!我必须说,在所有社交服务提供商中,谷歌的文档和用户界面都最差。它们的导航很糟糕,令人难以抗拒和困惑。我几乎总是忘记如何进入项目配置页面lol。【参考方案2】:

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

client_id secret

BEGINNINGEND 两者都有。

即使单击“复制”按钮也会发生这种情况。

【讨论】:

这个问题仍然存在:P 难以置信,即使在 API 控制台中单击“复制”按钮时...您会认为 Google 的开发人员区域会对空格敏感! 这里也令人难以置信。删除字符串两侧的多余空格。然后,如果按照这里所说的所有内容之后仍然没有任何效果,请删除应用程序/项目并重新创建它,因为可能存在缓存问题。 是的,问题依然存在!!!哇靠。我省略了一个空格,直到重新检查才看到它。谢谢。 该死!我看到最后的空格并删除它但没有检查开头的空格。【参考方案3】:

client_idclient_secret 中修剪前导和尾随空格。 Google 的复制按钮不会为您执行此操作。

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

【讨论】:

你可能不应该在这样的答案中暴露你的客户秘密。 @Fernando 这是一个扔掉的帐户。 你是怎么进入这个屏幕的? “丢弃帐户” - 不适用于 Google,它会跟踪您并将您曾经使用过的所有帐户与“关联帐户”捆绑在一起。一旦谷歌禁止其中一个帐户 - 整个捆绑包被阻止。只需在 Reddit 上搜索“Google 开发者帐户已终止”即可。 @ShaunLuttin 您确实意识到您的数据在答案编辑历史记录中仍然可见?仅供参考【参考方案4】:

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

【讨论】:

【参考方案5】:

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

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

【讨论】:

我的是两端都留有空白:/【参考方案6】:

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

    我去了谷歌控制台, 生成一个新项目,进行刷新,因为在我的情况下,创建页面后没有重新加载 选择新项目 创建客户 ID 根据需要使用它

谢谢大家:D

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

在我的情况下,这被证明是别的东西,即我的代码使用了一个没有正确设置的环境变量(并且愚蠢地没有被我的代码检查)。设置它,重新编译资产,然后重新启动应用程序就可以了。

【讨论】:

这里相同;我已经设置了但忘记重新启动我的终端 将我的批处理文件从set MY_ENV_VAR='a string' 更新为set MY_ENV_VAR=a string,错误消失了。环境变量中无关的引号字符串被解析为字符串本身的一部分。【参考方案9】:

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

【讨论】:

非常感谢。按照您的建议进行更改就可以了。 你是对的!正如你所说的那样工作。【参考方案10】:

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

【讨论】:

你先生/女士是一个传奇!我从 Heroku 环境变量中删除了引号。【参考方案11】:

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

【讨论】:

【参考方案12】:

可能旧凭据无效

请看下面的答案

*** answer

也可以使用短名称

请看下面的答案 *** answer

或产品名称与已回答的项目名称相同

有时可能会在

中包含额外的空间

检查此行两次,以便将您重定向到正确的网址

【讨论】:

【参考方案13】:

我用修剪解决了我的问题:

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

【讨论】:

【参考方案14】:

以下都不是我的问题 - 我通过打开隐身窗口解决了这个问题。某些东西显然被缓存在某处,无论更改多少身份验证客户端设置都无济于事,而且配置值中也没有任何尾随或前导空格。

【讨论】:

【参考方案15】:

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

【讨论】:

【参考方案16】:

在凭证处 接受来自这些 HTTP 引荐来源网址(网站)的请求(可选) 使用星号作为通配符。如果您将此留空,则将接受来自任何推荐人的请求。请务必在生产中使用此密钥之前添加引荐来源网址。 添加.(星点星)。对我来说很好用

【讨论】:

【参考方案17】:

我不小心在 URL 的客户端密码部分有一个值,但 Google 凭据不需要用于 android OAuth 2 客户端 ID 的客户端密码。只需将 URL 中的值留空就可以了。

【讨论】:

【参考方案18】:

对我有用的步骤:

    删除不适合您的凭据 使用某些 NAME 创建新凭据 在您的 OAuth 同意屏幕上填写相同的 NAME 在 OAuth 同意屏幕上填写电子邮件地址

名称应该完全相同。

【讨论】:

【参考方案19】:

另一件事要检查:

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

检查任何原始值是否仍然存在,并删除虚拟条目。

【讨论】:

【参考方案20】:

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

【讨论】:

【参考方案21】:

我的不起作用,因为我是从文档中的一个按钮创建的。我再次进入该项目并创建了另一个 OAuthClientID。有效。是的,也要注意左右多余的空格。

【讨论】:

【参考方案22】:

为获得最佳效果,请确保您拥有以下完整详细信息:

"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 格式下载

【讨论】:

【参考方案23】:

如果你在 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
    
);

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

【讨论】:

【参考方案24】:

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

当您指定授权的 Javascript 来源或授权的重定向 URI 时,请确保包含您的域,无论是否包含 www。所以https://google.com和https://www.google.com

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

【讨论】:

【参考方案25】:

这也可能是因为没有使用https url。

换句话说,这只适用于https。它仅适用于 httplocalhost

【讨论】:

以上是关于谷歌 oauth2 中的 invalid_client的主要内容,如果未能解决你的问题,请参考以下文章

“Invalid_client”为 Adwords API 生成 oAuth2 令牌

向 Discord API 发送 OAuth2 请求时的 invalid_client

Grails OAuth2 登录密码凭据授予返回 invalid_client

PHP:Google plus Oauth 2.0 - 获取OAuth2访问令牌时出错,消息:'invalid_client'

Google OAuth 令牌请求返回“invalid_client”:“未授权”

Google OAuth 令牌请求返回“invalid_client”:“未授权”