java - 如何通过 gRPC 发送网络钓鱼防护 API 密钥?
问题描述
我正在尝试通过 gRPC 使用 Google Phishing Protection API,这里的一切看起来都很简单,但是与这里相比,您可以看到使用 REST 您可以在不进行身份验证或类似的情况下发送请求,而您可以将 API 密钥传递为一个查询参数。
我测试了 REST 选项,它对我有用,但是尝试使用 gRPC 选项时,我在尝试进行身份验证时遇到了失败,我不想这样做。
解决方案
key
gRPC 中REST 查询参数的等价物是x-goog-api-key
元数据。添加元数据密钥的 API 会因语言而异。
将 Java 与 googleapi 客户端(您应该使用)一起使用时,您可以使用:
PhishingProtectionServiceV1Beta1Client.create(
PhishingProtectionServiceV1Beta1Settings.newBuilder()
.setCredentialsProvider(new NoCredentialsProvider())
.setHeaderProvider(PhishingProtectionServiceV1Beta1Settings.defaultApiClientHeaderProviderBuilder()
.setApiClientHeaderKey(yourApiKey)
.build())
.build());
在“普通”grpc 中,它看起来更像:
import io.grpc.Metadata;
private static final Metadata.Key<String> API_KEY
= Metadata.Key.of("x-goog-api-key", Metadata.ASCII_STRING_MARSHALLER);
Metadata apiKeyMetadata = new Metadata();
apiKeyMetadata.put(API_KEY, yourApiKey);
stub = stub.withInterceptors(MetadataUtils.newAttachHeadersInterceptor(apiKeyMetadata));