首页 > 解决方案 > 如何在 C++ 谷歌云存储客户端库中创建没有 json 的 gcs::Client?

问题描述

我需要在谷歌云存储中“以最终用户身份进行身份验证”(我代表我的应用程序的最终用户访问资源)。因为我的应用程序是用 C++ 编写的。我编译了 C++ 谷歌云存储客户端库。但这里它声明它需要客户端的 JSON 文件才能创建 gcs::Client 对象。我找不到任何其他方法来使用项目 ID、服务电子邮件、私钥、密钥名称和存储桶名称等信息创建客户端(这些信息足以在 python 中进行身份验证)。有没有办法在谷歌云存储 C++ 客户端库中使用上述信息对最终用户进行身份验证?

标签: google-cloud-platformgoogle-cloud-storage

解决方案


在 Google Cloud 中,有三种类型的凭据:

  • API 密钥。
  • 服务帐户凭据。
  • 用户凭证 (OAuth 2.0)。

API 密钥不适用于您的用例。这些凭据用于不需要身份的 Google 服务。

您引用的示例代码使用(需要)存储为 Json 文件的服务帐户凭据。这是验证和授权软件应用程序的标准方法。

如果您的目标是让您的用户使用他们的 Google 帐户进行授权并使用您软件中的 OAuth 2.0 令牌来访问 Google Cloud Storage,也可以这样做。您需要在您的应用程序中实现 Google OAuth 2.0 Flow,这将为用户启动一个浏览器。Google 将使用 OAuth 令牌回调您的代码。

C++ 使用 OAuth 2.0

建议:如果您之前没有做过任何 OAuth 2.0 的开发,我不会从 C++ 中的 Google OAuth 2.0 开发开始。使用像 Python 这样有很多示例的语言,以便您了解 OAuth 的工作原理。


推荐阅读