跳过主要内容

2026年获取Google客户ID指南

掌握2026年OAuth 2.0和Google Sign-In的客户ID Google设置。了解如何在Google Cloud中创建、管理和有效利用它。

获取 Google 客户 ID: 2026 年指南

您可能是因为 Google Sign-In 应该是一个快速的集成,结果您却在凭据屏幕上发愁,为什么一个应用类型会给您一个客户密钥,而另一个却不会。这种困惑是正常的,尤其是当您正在使用 Capacitor、Ionic、Electron 或混合的 web 和本机堆栈时。

大多数教程都忽略了最关键的部分: Google 客户 ID 是平台特有的,并且非 web 应用类型通常 不 会

获得客户密钥。创建错误的凭据只是为了强制一个秘密进入流程,通常会导致一个更难调试的 OAuth 设置。

连接到 Google 生态系统

许多团队在同一时间遇到这个问题。他们需要 使用 Google 登录, 或者他们想要对某些东西(如Drive或日历)进行用户批准的访问,而一个 API 键 suddenly 不再足够。

,或者他们想要用户批准的访问某些东西,如 Drive 或 Calendar,一个 __CAPGO_KEEP_0__ key suddenly stops being enough. 您的应用API 的凭证。 ,而不是被称为的 __CAPGO_KEEP_0__。鉴于此的凭证是.

Google Client ID

OAuth 实践设置通常涉及几个实现问题:

  • 一个实际的 OAuth 设置通常会归结为几个实现问题:
  • 无论您需要客户端密钥
  • 哪些重定向 URI 或起源必须完全匹配
  • 如何在不混淆凭据的情况下将移动和 web 流程连接起来
  • 为什么在浏览器中工作的流程在原生包装器中失败

实用规则: 如果您的应用程序要求用户权限或登录,请先以 OAuth 客户端类型思考,而不是 API 键。

这种区别会节省早期的时间。它还可以防止构建一个基于 web 凭据的移动登录流程的常见错误,因为控制台显示了更多的字段。如果您正在在 Capacitor 应用程序中实现此功能,则有关 在 Capacitor 应用程序中的 OAuth2 的指南是应用程序侧流程的有用伴侣。

什么是 Google 客户端 ID

一个 Google OAuth 2.0 客户端 ID 是 Google 认证系统中的应用程序的公共标识符。 Google 将其描述为在请求 Google 认证端点时向 Google 认证端点请求访问令牌时应用程序的唯一用户名,并指出它与 API 密钥不同,因为它用于 OAuth 流程中验证应用程序身份以交换令牌,正如 Google Cloud 的 OAuth 客户端文档中所解释的那样。 Google Cloud 的 OAuth 客户端文档.

Google Client ID 作为应用程序的唯一标识符和安全层的图表。

简单的认知模型

想象一下 Google 客户端 ID 为您的应用程序 公共用户名.

它告诉 Google,“这次请求来自已注册的应用程序。”在登录、同意、令牌交换和任何流程中,您的应用程序要求代表用户行动时,这很重要。客户端 ID 旨在由您的应用程序和 Google 认证服务器引用。

人们容易混淆的是,这个凭证位于两个概念旁边,它们是不可互换的。

客户端 ID 用于 OAuth 中应用程序的标识
API 密钥 API
客户端密钥 是用於安全的流程和應用類型的機密對等項。

很多的破坏性整合都是因为有人把这些东西当作同一种东西来处理。它们不是。

在实践中,Google客户端ID的作用

如果您需要 使用 Google 登录 或 Google ID是用於啟動驗證握手的前端值。Google 的文件還指出,應用程式必須在專用 Cloud Console 項目中註冊,才能生成憑據,且 Web 應用程式需要配置授權的 JavaScript 原始碼或重定向 URI,包括完整的方案和主機名稱。

因此,設定過程比生成簡單密鑰更嚴格。Google 不僅僅是啟用訪問,它還將驗證請求綁定到已知應用程式身份。

对于构建混合应用的团队来说,最安全的认知模型是这样的:

  • 使用客户端 ID来识别应用
  • 使用同意屏幕来代表应用给用户
  • 使用正确的应用类型来确定是否将密钥放入流程中

如果您想了解应用身份和委托访问如何结合在一起的更广泛的概述 应用授权指南 创建和查看您的客户端 ID

如何创建和查看您的客户端 ID

Google Auth Platform > Clients 路径和旧的 APIs & Services > Credentials 如何创建和查看您的客户端 ID 路径,详见 Google的设置文档.

一位正在使用显示Google Cloud控制台的笔记本电脑上的用户,用于创建OAuth 2.0客户端凭证。

从正确的控制台区域开始

打开Google Cloud控制台并选择或创建将拥有认证配置的项目。不要将认证分散到随机的项目中。稍后会使审计和支持更加痛苦。

从那里,去以下任何地方:

  1. Google身份平台>客户
  2. APIs & Services>凭证

如果您的团队看到不同的导航标签,这是正常的。Google已经将身份设置与API凭证表面其他部分分开。

创建凭证而不被限制

当您创建新OAuth客户端时,最大决策是 应用程序类型Google要求您选择一个具体的类型,如 Web, Android, iOS或 Desktop. 这个选择并非是外观上的选择,它定义了应用程序的识别方式以及所需的支持配置。

对于一个Web应用程序,预计您需要输入:

  • 授权的JavaScript源
  • 授权的重定向URI

这些值必须是精确的。对于一个Web凭证,Google期望完整的方案和主机名,如 https://www.example.com,而不是一个松散的域概念。

对于移动平台,形状是不同的。Android注册需要包级别身份和所有权验证,而iOS使用自己的平台标识符。如果您正在结合Google认证与另一个认证层, 这是一个使用Supabase的Capacitor社交登录设置的有用例子,展示了这些部分如何经常合并在一起。 如果您想比较UI并在点击时查看,这个教程是一个不错的可视化参考:

在哪里找到它

创建后,客户端ID会出现在项目的凭证列表中。同样的项目空间也是团队启用API和查看OAuth身份如何连接到同意屏幕的地方。注册应用程序的名称是用户在权限提示中看到的,这就是为什么准确命名应用程序很重要的原因。

Google会在长期内管理这些凭证。您可以返回到控制台来复制客户端ID、查看设置,并在适用时管理与该凭证相关的客户端密钥。

同意屏幕不是装饰。它是信任边界的一部分。用户在那里看到的应用程序名称,而不是内部项目的昵称。

平台特定的客户端ID配置

平台特定客户端 ID 配置

这个平台设置参考中提到 本地开发环境设置指南.

為什麼一個應用程式需要多個客戶端 ID

您的产品可能是用户看到的单个应用,但是在 Google 的 OAuth 客户端中,它是多个客户端。

A web 应用, an 安卓构建, an iOS 构建和一个 桌面应用 don’t present the same security properties. They don’t prove identity in the same way, and they don’t all store credentials in a trustworthy environment.

Google handles that by giving each platform its own app registration model.

以下是实用的分离方案:

  • Web 使用 Web 客户端 ID 和严格的源和重定向 URI 匹配。
  • Android 使用与包标识和 SHA1 指纹相关的 Android 客户端 ID。
  • iOS 使用与应用程序包标识相关的 iOS 客户端 ID。
  • 桌面或 Electron 通常使用安装或桌面式 OAuth 模式而不是基于秘密的浏览器流。

Google 客户端 ID 类型比较

应用程序类型 主要标识符 是否提供客户端密钥? 关键用例
Web 授权的JavaScript源和重定向URI 通常是的 浏览器应用和后端辅助Web OAuth
Android 包标识符加SHA1指纹 通常不是 原生Android登录
iOS 应用程序包标识符 常常没有 原生iPhone和iPad登录
台式机 已安装应用程序身份 常常没有 桌面应用程序,包括Electron风格的原生流程

移动和台式机开发者常常期望每个OAuth客户端都带有一个

客户端ID

和一个 客户端密钥 客户端密钥的悖论 这就是许多教程所犯的错误然后他们创建一个 Web 应用 因为只有这样他们才能在控制台中看到一个秘密。流程看起来更完整,所以他们继续。后来,身份验证在令人困惑的方式中出现了问题。

根据 这个关于移动凭证不匹配的说明,非Web应用类型,如Android、iOS和安装程序通常会接收一个客户端ID,但没有客户端密钥的故意,因为Google不希望在客户端软件中嵌入一个机密的密钥,用户可以从中提取它。

这个设计选择是正确的。一个移动应用程序或Electron捆绑包不是一个安全的密钥存储器。

什么有效: 为公众客户端设计的原生或客户端OAuth流程。
什么无效: 为移动应用程序创建一个Web凭证,只是为了强制实施一个密钥到实现中。

对于Capacitor团队,这通常会在两个糟糕的模式中出现:

  1. 使用一个 web客户端 然后尝试像一个保密服务器一样行为。
  2. 应用程序发送一个 客户端密钥 从捆绑的code,这实际上破坏了密钥的保密性。

更好的方法是将移动和桌面应用程序视为 公共客户端.在现代OAuth中,这通常意味着使用不依赖于客户端内置密钥的流程。如果您的后端参与了,保持保密操作在后端,native应用程序仅限于公共客户端应该做的事情。

另一个细微差别对于Firebase-backed Android sign-in很重要。在这种设置中, web应用程序类型客户端ID 被用作后端服务器的OAuth客户端ID,而Android应用程序则保留自己的平台特定身份。这种分离会让团队感到困惑,因为他们会看到同一个项目中同时存在一个web凭证和一个移动凭证,认为它们互相替代。它们并不互相替代。它们各自扮演不同的角色。

如果你记住一个规则,那就是: 选择与code运行的客户端类型相匹配,而不是你希望拥有的凭据形状.

保护您的GoogleAPI凭据

大多数OAuth事件并不是由复杂的攻击引起的。团队泄露凭据、过度设置重定向设置或将机密放入不安全的地方

Google的OAuth指南强调,客户端ID和机密应该被视为私有数据,针对web应用程序,客户端ID会被强制与预注册的重定向URI进行匹配。如果重定向URI不严格匹配,Google会拒绝请求。该源绑定是保护令牌劫持的部分,正如在 OAuth.com的客户端注册指南.

一名专业开发人员坐在办公室的桌子前,审查安全凭据的双屏幕电脑

立即锁定什么

如果你只做几件事正确,那就是这些:

  • 不要将客户端机密在应用程序code中发送 Web包、移动二进制文件和Electron包都是可由用户检查的
  • 注册准确的重定向URI 足够的并非足够。Google 验证严格匹配的 Web 流程。
  • 保持源头紧凑。 不要仅为了减少设置阻力而授权广泛的域名。
  • 分离平台凭据。 不要让便利性将 Android、iOS 和 Web 凭据合并为一个凭据。

一个操作细节容易被忽略。Google 允许团队为现有客户 ID 生成新密钥并禁用旧密钥。这在密钥被泄露时或您正在优化部署流程时很重要。

安全团队的实际做法

那些避免麻烦的团队对 OAuth 凭据的处理与对其他生产密钥的处理一样严格。

它们将 Web 客户端密钥保留在后端,通过环境管理注入它们,并审计谁有控制台访问权限。如果您正在清理发布管道,这篇关于 在 CI/CD 管道中管理密钥的指南 也值得应用到您的认证设置中。

它们还审计元数据,而不是仅仅审计密钥。OAuth 同意屏幕与用户看到的客户端标识相关联。如果应用名称模糊或误导性,用户更有可能不信任提示或批准错误应用。

安全性不仅仅是隐藏一个秘密。它还包括确保每次应用程序身份、重定向目标和批准屏幕都准确匹配。

常见的客户端 ID 错误排查

大多数 Google OAuth 失败都是由于设置错误引起的。错误信息可能不友好,但一旦你知道哪里去找问题,问题通常是很直接的。

解决大多数故障的修复

redirect_uri_mismatch

您的应用程序发送的重定向 URI 与注册的 Web 客户端不完全匹配。检查方案、主机、路径和任何尾随差异。对于 Web OAuth,精确匹配是安全模型的一部分。

invalid_client

这通常意味着应用程序发送了错误的客户端 ID、错误的密钥或在不同平台之间混合了凭据。常见的例子是 Android 或 iOS 流程意外使用了 Web 凭据的错误位置。

invalid_request

这一个问题很广泛,但在跨平台应用中,它经常指向 malformed auth 参数或流程不符合客户端类型。检查应用程序是否尝试在不应该的地方包含密钥,或者所选的 OAuth 流程是否期望不同的客户端类型。

Google Sign-In 在 Web 上工作但在移动设备上失败

首先要检查的是客户端类型。移动开发人员最常见的错误来源是创建一个 Web 应用程序客户端 ID 只为了获取客户端密钥,而实际上应该使用 Android 或 iOS 类型,这些类型通常省略密钥,正如在 这个客户端密钥不匹配的分解. 如果您的实现包含在登录后进行令牌生命周期工作,则该注销指南也很有用。

Android 登录失败后凭据创建

双重检查 Android 客户端附加的 SHA1 FingerPrint。如果签名身份与 Google 期望不符,应用程序就无法正确证明所有权。

Consent 屏幕看起来不正确

验证在控制台中设置的 OAuth 配置中的应用程序名称和品牌。用户授权的是他们在那里看到的内容,因此错误的元数据会导致信任问题和支持噪音。

实践调试顺序很简单: 首先检查客户端类型,然后检查重定向设置,接着检查平台标识符,最后检查是否在流程中需要密钥.


如果您的团队部署 Electron 应用程序或 Capacitor,认证错误很少会孤立。它们通常会在发布压力、回滚需求和环境特定修复中出现。 Capgo 帮助团队在不等待商店审核的情况下将目标更新推送到应用程序 code 和资产,使得更容易修复登录流程、回调处理和客户端认证问题。

Live Update 为 Capacitor 应用程序提供实时更新

当 web 层面的 bug 活跃时,通过 Capgo 发送修复,而不是等待几天的 app store 审核。用户在后台接收更新,而原生变化仍然在正常的审查路径中。

来自 Martin 的人性化支持

立即开始

博客最新文章

Capgo 为您提供创建真正专业的移动应用所需的最佳见解