我一直在使用OAuth 2.0对我自己的应用程序的用户进行身份验证。这最初是为了“用Google登录”的目的,现在运行良好。
此外,我现在希望为这些用户提供对其他可计费的Google Cloud API(如翻译)的编程访问,但使用他们自己的资源,而不是我的应用程序的资源。
到目前为止,我所尝试的似乎是错误的:
我添加了相关的作用域URI作为OAuth流的一部分(例如https://www.googleapis.com/auth/cloud-translation),然后尝试通过发送类似Authorization: Bearer {access_token}
的auth报头来访问API。
通过这种方式为用户提供服务,但似乎是通过我自己的应用程序(云项目),因此我假设任何使用都将由我支付-而不是他们。
如何正确地完成这一点?如何从我的应用的access_token到对云API的认证请求(用户将为此付费)。假设用户将不得不建立一个云项目并启用API,但这是好的。
1条答案
按热度按时间brvekthn1#
根据API的不同,可以根据不同的项目收取呼叫费用:
1.资源项目:这是包含API所操作的资源的项目。
1.客户项目:这是包含您的OAuth客户端ID的项目。
1.用户项目:这可以是用户具有足够访问权限的任何项目。
许多API操作的资源是Google Cloud项目的一部分(URL通常包含一个项目ID)。对于这些API,默认情况下它们对 * 资源项目 * 收费。
对于不对项目资源进行操作的API(如Cloud Translate API),默认情况下,它们对 * 客户端项目 * 收费。
您可以通过向请求添加一个
X-Goog-User-Project
HTTP标头来覆盖此默认行为并指定要计费的自定义 * 用户项目 *。此标头必须包含:调用方指定的项目,用于配额和记帐目的。调用方必须具有对该项目的
serviceusage.services.use
权限。验证用户身份的方式看起来不错,但我认为添加这个头是缺少的。