如何使用 JWT 访问 Google Androidpublisher API?

How to get access to Google Androidpublisher API using JWT?

所以有一种方法可以使用此处描述的 JWT 令牌对 Google API 服务进行授权:Service account authorization without OAuth.

我已尝试遵循此说明:

1. Create a service account. Be sure to keep the JSON file you get when you create the account.

完成。

2. Get the API's service name and API name from the service definition file on GitHub.

我去了Google APIs GitHub repository and started searching. I need to get access to Androidpublisher API. So, at first i've tried to examine the folders structure and underestand where the required API is. No luck. Then i've tried to search the whole repo for *.yaml files by keywords "androidpublisher" and "android". No luck again. I've actually found something by keyword "publisher": it was pubsub API,不过好像不是我要找的

好的,让我们再读一遍:

If the API you want to call has a service definition published in the Google APIs GitHub repository, you can make authorized API calls using a JWT instead of an access token.

所以基本上这意味着任何 API 可能会也可能不会 在那里发布。

在此SO question i've found a way to authorize for Androidpublisher API using JSON file with credentials and Java client library for Google Play Developer API:

private static Credential authorizeWithServiceAccount() throws IOException {
    log.info("Authorizing using Service Account");
    try (FileInputStream fileInputStream = new FileInputStream(JSON_PATH)) {
        return GoogleCredential.fromStream(fileInputStream, HTTP_TRANSPORT, JSON_FACTORY)
                .createScoped(Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER));
    }
}

所以我假设一种使用 JWT 令牌授权的方法。但我不能使用 Java 库,因为我的服务将在 C++ 上使用 运行。不幸的是 Google 没有为 C++ 开发人员提供库。

有一次我非常绝望,我什至尝试在 Java 和 运行 上编译这段代码,只是为了看看它正在将 HTTP 请求发送到哪里(使用调试器或Wireshark)。但我不是 Java 开发人员,在解决依赖性问题一个小时后,我在 运行 编译代码时仍然遇到 "missing Java Key Store"(或类似问题)的一些问题。所以我放弃了。

所以我的最后一个问题是: Androidpublisher API 的 Service nameAPI name 是什么?

我应该能够在 this instruction 的第二步中检索到这些值。但是我失败了。我觉得这是我现在缺少的唯一一条信息来完成我的任务。

我找到了一种无需 即可访问 Adndoidpublisher API 的方法:

2. Get the API's service name and API name from the service definition file on GitHub.

我可以在 HTTP/REST 选项卡中 create a JWT token and then use it to obtain an API access token. The way of doing this is described here

然后我可以访问 ordinary way 中的 API。