google-cloud-platform - 如何为 C++ 的 gRPC 正确配置凭据?
问题描述
再会。
我正在编写一个小型 C++ 项目,并在其中使用 Google Cloud Translation API。我没有找到适合我的适用于 C++ 的 Google Cloud Translation API 的任何示例。因此,我稍微修改了 Google Cloud Speech API 示例。我几乎成功了,但是我无法通过 gRPC 授权。
我设置了一个 Google 帐户。该application_default_credentials.json
文件位于默认文件夹 ( ~/.config/gcloud
) 中。该gcloud auth application-default print-access-token
命令输出一个有效的访问令牌。
来自 Google Cloud Speech API 示例的 gRPC 连接通常经过授权并连接到 Google 云。但是由于某种原因,我的代码中没有出现 gRPC 授权,该代码是为 Google Cloud Translation API 重新设计的。
这是我的代码:
#include <grpc++/grpc++.h>
#include <google/cloud/translate/v3/translation_service.grpc.pb.h>
using google::cloud::translation::v3::TranslationService;
using google::cloud::translation::v3::TranslateTextRequest;
using google::cloud::translation::v3::TranslateTextResponse;
using namespace std;
void Test()
{
auto creds = grpc::GoogleDefaultCredentials();
auto channel = grpc::CreateChannel("translation.googleapis.com", creds);
std::unique_ptr<TranslationService::Stub> translator(TranslationService::NewStub(channel));
grpc::ClientContext context;
TranslateTextRequest request;
request.set_parent("projects/<**My-Project-Id**>/locations/global");
request.set_source_language_code("en-US");
request.set_target_language_code("ru");
request.set_mime_type("text/plain");
request.add_contents("Hello World!");
TranslateTextResponse response;
grpc::Status status = translator->TranslateText(&context, request, &response);
cout << status.ok() << endl << status.error_message() << endl;
}
运行此代码将显示以下内容:
0 Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential.
See https://developers.google.com/identity/sign-in/web/devconsole-project.
显然,由于某种原因,在打开 gRPC 连接时我的凭据设置不适用。
谁能帮帮我吗?有没有人有任何使用谷歌云翻译 API 和 gRPC 的 C++ 编程语言的经验?
解决方案
推荐阅读
- javascript - HTML import is not working in Electron app
- laravel - useradd invalid user in Dockerfile
- python - Is there anyway to solve this without using two for loop
- python - how do i create a list from csv contents and then search within that list
- python-3.x - Using the Python math.prod() in a specified Pandas date range
- gradient - Why is Policy Gradient method for Reinforcement Learning good for LARGE action spaces
- microservices - Batch operation over thousands of aggregates in CQRS system, do people do that?
- python - 如何在python中创建产品订单的共现矩阵?
- c - How to initialize a data structure (eg. linked list) with functions in C?
- ios - 有没有像@ObservedObject 这样不涉及创建新类的东西?