如何通过另一个应用程序中的访问凭据,使用自己的应用程序对用户进行身份验证



我一直在使用OAuth 2.0对我自己的应用程序的用户进行身份验证。这最初是为了";使用谷歌登录";并且运行良好。

此外,我现在想为这些用户提供对其他付费谷歌云API(如翻译(的编程访问,但要使用他们自己的资源,而不是我的应用程序的资源。

到目前为止,我所尝试的似乎是错误的:

我添加了相关的作用域URI作为OAuth流的一部分(例如。https://www.googleapis.com/auth/cloud-translation)然后尝试简单地通过发送类似CCD_ 1的auth报头来访问API。

通过这种方式,用户可以获得服务,但似乎是通过我自己的应用程序(云项目(,因此我认为任何使用都将由我支付,而不是由他们支付。

应该如何正确地做到这一点?我如何从应用程序的access_token到向用户计费的云API的已验证请求。据推测,用户必须建立一个云项目并启用API,但这没关系。

根据API的不同,可以对不同的项目收费:

  1. 资源项目:该项目包含API操作的资源
  2. 客户端项目:该项目包含您的OAuth客户端ID
  3. 用户项目:这可以是用户有足够访问权限的任何项目

许多API在谷歌云项目的资源上运行(URL通常包含项目ID(。对于这些API,默认情况是向资源项目收费。

对于不在项目资源上操作的API(如Cloud Translate API(,默认情况下,它们向客户端项目收费。

您可以覆盖此默认行为,并通过向请求添加X-Goog-User-ProjectHTTP标头来指定要收费的自定义用户项目。此标头必须包含:

用于配额和计费目的的调用方指定的项目。调用方必须对项目具有serviceusage.services.use权限。

对用户进行身份验证的方式看起来不错,但我认为缺少添加此标头。

相关内容

最新更新