0

我正在尝试访问 Google Tag Manager API 以通过我的 C# Web API 获取我的标签列表 如文档中所述,只能通过 OAuh 2.0 进行授权,因此我创建了一个服务帐户,以便我的 Web API 可以与之交互无需任何用户交互的谷歌云服务。我已经下载了 JSON/P12 密钥并将其存储在我的解决方案中,并且能够提取密钥但是当我将该密钥传递给 HTTPClient 请求的标头中的 Google Tag Manager API 时,我收到一个错误,因为找不到

以下是我正在使用的代码片段

        string token = "";
        using (FileStream stream = new FileStream(jsonKeyFilePath, FileMode.Open, FileAccess.Read))
        {
            token = await GoogleCredential
                .FromStream(stream)
                .CreateScoped(new []{ TagManagerService.Scope.TagmanagerReadonly})
                .UnderlyingCredential
                .GetAccessTokenForRequestAsync();
        }
        using HttpClient client = new HttpClient();
        string url = "https://tagmanager.googleapis.com/tagmanager/v2/accounts/{accountid}/containers/{containerid}/workspaces/{workspaceid}/tags";
        client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
        HttpResponseMessage response = await client.GetAsync(url);
        if (response.IsSuccessStatusCode) // this is always returning false
        {
            log(response);
        }

我尝试在网上查找一些资源,但没有任何帮助,与.Net 框架支持相关的文档非常少另外,通过提取的令牌GoogleCredential最后包含很多点,如下所示

ta27.c.dzj7GOL8nadWmrqM74......................................................................................................................................................................................................................................................................................................................................................................................................

作为回应,我得到的状态为 NotFound

在此处输入图像描述

4

1 回答 1

0

我能够弄清楚问题的解决方案是容器访问我必须将我的服务帐户电子邮件作为用户添加到我的谷歌标签管理器容器中并且它有效

于 2021-10-07T01:52:55.333 回答