C# 获取Google My Business(GMB)服务帐户的权限时出错,不确定权限或代码是否不正确

C# 获取Google My Business(GMB)服务帐户的权限时出错,不确定权限或代码是否不正确,c#,.net,google-oauth,C#,.net,Google Oauth,好的,所以我的问题是,我试图查询GMB,我只是想得到回复,所以我试图运行一个get呼叫。但是,我得到了“调用方没有权限[403]”。我不确定为什么会这样,也许我做得不对 我创建了一个具有“所有者”权限的服务帐户,从中获取.p12密钥,这就是我在代码中使用的内容,同时在serviceAccountEmail代码中使用该帐户的电子邮件地址。我使用的是服务帐户bc,我只想使用GMB的位置API,所以我不需要连接到任何用户。任何帮助都会很好!谢谢 class Program { static v

好的,所以我的问题是,我试图查询GMB,我只是想得到回复,所以我试图运行一个get呼叫。但是,我得到了“调用方没有权限[403]”。我不确定为什么会这样,也许我做得不对

我创建了一个具有“所有者”权限的服务帐户,从中获取.p12密钥,这就是我在代码中使用的内容,同时在serviceAccountEmail代码中使用该帐户的电子邮件地址。我使用的是服务帐户bc,我只想使用GMB的位置API,所以我不需要连接到任何用户。任何帮助都会很好!谢谢

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("====================");
        try
        {
            new Program().Run().Wait();
        }
        catch (AggregateException ex)
        {
            foreach (var e in ex.InnerExceptions)
            {
                Console.WriteLine("ERROR: " + e.Message);
            }
        }
        Console.WriteLine("Press any key to continue...");
        Console.ReadKey();
    }
    private async Task Run()
    {
        Console.WriteLine("GMB API - Location Data");
        Console.WriteLine("==========================");

        String serviceAccountEmail = "test@test-api.iam.gserviceaccount.com";
        var certificate = new System.Security.Cryptography.X509Certificates.X509Certificate2(@"key.p12", "notasecret", X509KeyStorageFlags.Exportable);

        ServiceAccountCredential credential = new ServiceAccountCredential(
           new ServiceAccountCredential.Initializer(serviceAccountEmail)
           {
               Scopes = new[] { "https://www.googleapis.com/auth/plus.business.manage" }
           }.FromCertificate(certificate));

        // Create the service.
        var service = new MyBusinessService(new BaseClientService.Initializer()
        {

            HttpClientInitializer = credential,
        });

        var accountsListRequest = service.Accounts.List();
        ListAccountsResponse accountsResult = accountsListRequest.Execute();

        var account = service.Accounts.Get("accounts/12345").Execute();
        Console.WriteLine("Press any key to continue...");
        Console.ReadKey();
    }
}

}服务帐户需要预授权。使用服务帐户电子邮件地址转到GMB使用电子邮件地址与服务帐户共享帐户,就像与任何其他用户共享一样

然后,该服务账户将可以访问相关的GMB

这是假设您确信GMB甚至支持服务帐户,而我不知道它支持服务帐户

由于文档似乎只提到了oauth2,我怀疑它仍然没有提到,您应该改用oauth2


这不是一个日历API,所以我不确定你在说什么日历。我正在尝试使用来自Google My Business的位置API数据,我正在尝试使用服务帐户调用API,因为这是Google服务器数据,因此我认为这只需要2OL,因为在这种情况下没有客户端。但是,我在尝试使用此帐户或我尝试创建的任何其他帐户进行连接时遇到问题。您从哪里了解到此API支持服务帐户?你能把那个页面链接给我吗?我想,因为这里没有客户,所以使用服务帐户应该是可行的,因为只有我在尝试获取有关谷歌帐户的信息。我在这里也看到了这一点,但也许我误解了。谢谢你的帮助,我很感激。与服务器帐户共享帐户是什么意思?我该怎么做?再说一次,这不是日历,所以我不知道你在说什么。服务帐户必须经过预授权,所以你需要能够与它共享你的GMB帐户,据我所知,你不能。如果您对日历API有问题,您应该打开另一个问题,您当前的问题没有说明任何相关内容