首页 > 解决方案 > 如何通过 gRPC 发送网络钓鱼防护 API 密钥?

问题描述

我正在尝试通过 gRPC 使用 Google Phishing Protection API,这里的一切看起来都很简单但是与这里相比,您可以看到使用 REST 您可以在不进行身份验证或类似的情况下发送请求,而您可以将 API 密钥传递为一个查询参数。

我测试了 REST 选项,它对我有用,但是尝试使用 gRPC 选项时,我在尝试进行身份验证时遇到了失败,我不想这样做。

标签: javarestgrpcgrpc-java

解决方案


keygRPC 中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));

推荐阅读