为什么 Google 会为 Native 应用程序提供客户端密钥?

Dun*_*eal 5 oauth oauth-2.0 google-oauth

我正在编写一个适用于 Google API 的本机应用程序。在注册我的应用程序时,尽管它明确指定为 Native,但 Google Developers Console 为我提供了一个客户端机密。

据我了解 OAuth 2.0 协议,本机应用程序永远不应该有客户端机密,因为它们不能保证其机密性。谷歌在实施 OAuth 2.0 时是否犯了错误?我应该如何进行?

aei*_*erg 4

您是对的,从保密的角度来看,客户端密钥在本机应用程序中并不是很有用。我怀疑它主要是为了与网络应用程序流程保持一致。

然而,它确实至少有 1 个有用的功能……原始开发人员可以随时重置它,从而有效地撤销绑定到该客户端 ID 的所有刷新令牌。

  • 要在本机应用程序中获取访问令牌(这是您最终用于访问 API 的令牌),您需要向 Google 提供刷新令牌(这是 Google 在原始 OAuth 舞蹈结束时提供的内容 - 并且您的应用程序通常会存储对于用户)和您的客户端密钥。可以将其烘焙到您的应用程序中(知道它可以进行逆向工程) - 它本身不提供对任何数据的访问 - 它始终与刷新令牌一起使用。 (3认同)