【问题标题】:Google APIs Console - missing client secretGoogle API 控制台 - 缺少客户端密码
【发布时间】:2024-04-29 11:00:01
【问题描述】:

我尝试为使用 OAUTH 2.0 作为登录名以检索用户配置文件的 Android 应用程序创建测试客户端 ID。我按照步骤在谷歌控制台上完成了客户端 ID 的创建,但我在任何地方都看不到客户端密码。我正在尝试帮助我的雇主为其应用程序获取 Google 凭据。我知道如何在 android 中实现 OAUTH 2.0,但我需要客户端密码才能将代码与访问令牌交换。

首先,我从“服务”标签中选择了“Google+ API”。 然后按照 API 访问选项卡中的屏幕步骤进行操作。

【问题讨论】:

  • 我创建了一个新的服务帐户,下载了一个新的 JSON,之后一切正常。

标签: oauth-2.0


【解决方案1】:

现在其他类型不可用,我使用桌面类型,因为我希望使用桌面应用程序 Visual Studio 上传。成功了,我得到了客户端 ID 和客户端密码。

【讨论】:

    【解决方案2】:

    由于接受的答案中的几乎所有内容都已被弃用,我想我会分享我的发现。

    我需要需要客户端密码的 People API。 Google 建议在 Android 中使用 People API 是,

    选择应用类型其他,输入 命名为“People API Quickstart”,然后单击“创建”按钮。

    在这里找到:https://developers.google.com/people/quickstart/java (步骤 1 e 部分)

    因此,如果您需要客户端密码,您可以考虑使用 Other 类型。当然,请先按照您的特定 API 的文档进行操作。

    【讨论】:

    • 好哥们!!我会试试的。谢谢
    【解决方案3】:

    source 说: 访问 Google Developers Console 以获取 OAuth 2.0 凭据,例如 Google 和您的应用程序都知道的客户端 ID 和客户端密码。这组值根据您正在构建的应用程序类型而有所不同。例如,JavaScript 应用程序 不需要 秘密,但网络服务器应用程序需要。

    【讨论】:

      【解决方案4】:

      就在今天,我发现在新的 Cloud Console 上我们可以看到 android 应用程序的客户端密码 - 而在旧的 google 控制台中我们却不能。

      要使用新版 Cloud Console,只需点击消息“我们正在改进体验。试试新版 Cloud Console”。谷歌会要求短信确认。现在您将被重定向到the new cloud console

      现在,只需选择您的项目,点击左侧菜单上的“注册应用程序”,选择您的 android 应用程序,然后瞧,在 oAuth 2.0 客户端 ID 上,您将看到您的客户端密码。不知道为什么在旧的谷歌控制台上它没有显示,但如果你真的需要一个客户端密钥,它就在那里。

      【讨论】:

      • 我这边没有“注册应用程序”选项。我需要做什么才能看到它?
      【解决方案5】:

      另一种解决方案是您必须创建一个类型为“已安装应用程序”的客户端 ID,然后您将拥有客户端密码

      【讨论】:

        【解决方案6】:

        点击“下载 JSON” 是你要找的吗?

        【讨论】:

        • 干杯,我在我的 JSON 中找到了秘密!
        • 我下载了。但是,我没有找到秘密ID。我怎样才能得到
        • @Jack 我也没找到。
        • @harikrishnan 我也有同样的问题。谷歌文档要我发送一个我从未得到的客户秘密。 JSON 和 Google Developer Console 也不包含客户端密码。编辑:我知道这是您的旧评论,但 Google 似乎完全删除了客户端机密,但没有更新他们的文档。
        【解决方案7】:

        Google 似乎终于放弃了unnecessary client_secret for installable applications,并且还没有更新他们的文档。 您应该检查您是否已经在初始 OAuth 请求 like it's handled on Facebook 中获得了 access_token

        另一种可能性是使用Simple API Access key

        更新:

        第一种方法似乎不适用于 Google。

        Android 的推荐方法是使用AccountManager,而不是烘焙您自己的请求。关注this example 了解这是如何实现的,以及如何使用简单 API 访问密钥获取 AuthToken。然后,您可以包含 OAuth2 API 库来检索用户信息,而不是使用 Tasks API。

        【讨论】:

        • 它不仅仅适用于 access_code。 String authorizationUrl = new GoogleAuthorizationCodeRequestUrl(OAuth2ClientCredentials.CLIENT_ID, OAuth2ClientCredentials.OAUTH_CALLBACK_URL, v).build();
        • 和 mWebView.loadUrl(authorizationUrl);
        • 以上将提供访问代码,但我需要访问令牌,并且我需要客户端密码来交换访问令牌的代码。除了使用简单 API 访问密钥之外,还有其他解决方案吗?我需要获取用户资料
        • 谢谢,它正在工作。我从developers.google.com/google-apps/tasks/… 实现了所有并更改了 String AUTH_TOKEN_TYPE = "oauth2:googleapis.com/auth/tasks";进入字符串 AUTH_TOKEN_TYPE = "oauth2:googleapis.com/auth/userinfo.profile";谢谢,你救了我一月。
        • 您提供的 Jan Gerlinger 示例的链接指向已弃用的文章。我认为最终的解决方案可能是使用 Google+ 登录程序developers.google.com/+/mobile/android/getting-started