使用 API 密钥或服务帐户实施 Google 语音凭据

时间:2021-01-08 14:49:27

标签: android google-cloud-platform google-speech-api

我有一个关于为 Android 实现 Google 语音或一般 Google Cloud API 的问题

我想要的是为不同的客户端提供多个证书或 API 密钥。 实际上,我可以将 10 台不同的 Android 设备链接到客户端 1 的服务器 1,将 20 台不同的 Android 设备链接到客户端 2 的另一台服务器。 我想拆分此客户的账单,但使用相同的 Android 项目/包。

https://github.com/GoogleCloudPlatform/android-docs-samples/tree/master/speech/Speech 示例中,使用了 OAuth2 凭证,但这里的问题是您只能为 1 个项目使用 1 个 OAuth2 凭证,但在这种情况下,我需要多个,所以这不是一个选项。

即使我在服务器上实施 OAuth2 并为设备刷新令牌,我也需要有多个。

最后我会有 1 个谷歌账户,有多个客户端配置,每个客户端在检查账单信息和限制时都是分开的。如果我有多个键,我可以只禁用一个,那就是

所以我的问题是(如果我可以为特定的 API 密钥/服务帐户拆分账单,或者只知道使用情况)

  1. 如何更改示例实现以将 API 密钥或不同的服务帐户与 GoogleCredentials.fromstream() 一起使用?我是否需要手动实现对 google REST API 的 API 请求,或者这在 Android 中是否可行,例如:

    SpeechClient.create(SpeechSettings.newBuilder().setCredentialsProvider {API_KEY}.build())
    

1 个答案:

答案 0 :(得分:0)

对于 Speech API 上使用的每个 API 密钥,您不能拥有帐单明细。在这里,最简单的解决方案是为每个客户创建一个项目。当请求进来时,检查服务器上的用户 ID(因为用户已经过身份验证并且您有 OAuth2 令牌),并根据存储在某处的用户信息(我们使用 Firestore 存储用户配置文件),调用 Speech API在正确的项目中。

每个项目有 1 个账单,每个项目还有一个免费套餐!


编辑 1

可能我没说清楚。这是一个架构。

enter image description here