如何从 iOS 中的 Google Developers Console 获取客户端密码?

How to get client secret from Google Developers Console in iOS?

目前我正在处理一个旧项目,其中有一个客户端 ID 和客户端密码。现在我想使用另一个开发人员帐户更新具有新客户端 ID 和客户端密码的那些。我遵循了

的每一步

https://developers.google.com/+/mobile/ios/getting-started

Google APIs Console - missing client secret

但我只能看到客户端 ID。客户端密钥在哪里?

这里我只能看到客户端id

嘿,这是一步一步的过程,希望这对你有帮助...

第一步: 转到 Google 开发者控制台 并创建新应用程序

步2:Enable google加api

您可以在 启用 API 的 选项卡中看到启用 api,它位于 API 旁边Library ,在第二张图片中可见。

第 3 步:转到 API & auth 选项卡中的凭据,然后 select credentials 选项

select 您需要的身份验证类型

然后您将可以看到配置同意屏幕使用您希望提供的信息配置页面。

第 4 步:Select 顶部的 web 应用程序 选项 并输入所需的 url's

最后点击创建按钮

一旦你这样做了..你可以看到...客户端ID客户端密钥...

在iOS时,OAuth凭证的应用类型应该是'iOS'。 然后您应该在代码中传递一个空字符串作为客户端密码。

在应用程序中保密(对整个应用程序来说是全局的,而不是每个用户唯一的)永远不会安全。请参阅https://developer.okta.com/blog/2019/01/22/oauth-api-keys-arent-safe-in-mobile-apps这是一篇很棒的文章,请花尽可能多的时间来理解它。

因为不能保持安全,所以在 iOS 中使用客户端密钥是旧的、过时的方法。现在您想使用 proof-key-code-exchange (PKCE)。上面也有解释link,但简而言之:

  • 在 iOS 中生成一个密钥,它是一次性用于该特定登录
  • 仅将密钥的哈希值发送给登录机构 (Google)。原件还没离开app
  • 要获得令牌,您发送: AuthorizationCode 也是一次性使用的
  • Google 可以将“原始秘密”与之前发送的哈希进行比较。因此它知道您不是窃取 AuthorizationCode
  • 的攻击者

回到问题。 Google 让我们创建不同类型的“应用程序”:

  • Web 应用程序:具有客户端机密(它在后端服务器上,而不是在可公开访问的 iOS 应用程序上)
  • iOS 应用程序:改为使用“iOS URL 方案”。有些框架使用此 URL 方案并执行我上面为您描述的步骤(包括 PKCE)。免责声明:我不是 iOS 开发人员,但我 99% 确定