如何使用跨项目服务用户在 Google Play Developer API 中进行身份验证

问题描述 投票:0回答:1

在我当前的设置中,我只能在名为 ProjectA 的共享项目中拥有一个服务帐户。该项目仅用于创建服务帐户(SA)。之后,我邀请 SA 加入我自己的项目 ProjectB,这将创建所谓的跨项目 SA。

在 ProjectB 中,我启用了 Google Developer API,特别是适用于 Android Publisher 的 Google Developer API。为了验证并执行所需的操作,我使用 .NET Google 客户端库,可以在此处找到。

但是,我在使用 SA 的 JSON 密钥文件建立 OAuth2 连接并创建 API 服务时遇到问题。即使我提供了 ProjectB ID,我仍收到一条错误,指出 ProjectA 未启用 API。

这就是我在脚本中创建 ServiceAccount 凭据的方式:


      public static GoogleCredential GetCredential()
 {
     string[] APIscopes = new string[] { AndroidPublisherService.Scope.Androidpublisher  };

     GoogleCredential credential = GoogleCredential.FromFile(KEY_FILE).CreateScoped(APIscopes);

     return credential;
 }

这就是我创建谷歌开发者 API 服务的方式:


public static AndroidPublisherService GetService()
{

    AndroidPublisherService service = new AndroidPublisherService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = GetCredential(),
        ApplicationName = ProjectID
    });
    //Console.WriteLine(service.ApplicationName);
    return service;
}

我只在调用时收到错误:

service.Users.List("developers/*").Execute();

错误:

Google.GoogleApiException H结果=0x80131500 Message=服务 androidpublisher 已引发异常。 HttpStatusCode 被禁止。 Google Play Android Developer API 之前未在项目 PROJECTA_ID 中使用过或已被禁用。通过访问 https://console.developers.google.com/apis/api/androidpublisher.googleapis.com/overview?project=PROJECTAID 启用它,然后重试。如果您最近启用了此 API,请等待几分钟,以便该操作传播到我们的系统,然后重试。

google-cloud-platform google-api google-oauth google-api-dotnet-client gcp-iam
1个回答
0
投票

根据错误,可能是服务帐户(项目 A)中的错误原因没有启用 Google Play Android Developer API,即使您已在项目 B 中启用了它。这是因为交叉 -项目服务帐户从其父项目继承权限,而不是从他们受邀加入的项目继承权限。

您可以尝试以下步骤来解决问题:

  1. 您可以检查项目A中是否启用了“Google Play Android Developer API”

  2. 检查该服务帐户的权限。确保服务帐号有访问AndroidPublisherService的权限。

  3. 为API调用显式设置项目ID

© www.soinside.com 2019 - 2024. All rights reserved.