当前位置: 首页 > 知识库问答 >
问题:

Azure功能中的谷歌广告API-如何进行身份验证?

蓝逸仙
2023-03-14

我正在使用C#编写一个Azure函数。NET核心。

我已尝试以此页作为应用程序进行身份验证。

我尝试过使用此页面的服务号进行身份验证。

在这两种情况下,我都会收到一条拒绝访问的错误消息。

我的根本问题是,

我应该从Azure功能中为Google广告API使用哪种身份验证方法?

在我最近一次尝试使用服务帐户时,我有以下代码

GoogleAdsConfig config = new GoogleAdsConfig()
            {
           OAuth2Mode = Google.Ads.GoogleAds.Config.OAuth2Flow.SERVICE_ACCOUNT,
           OAuth2SecretsJsonPath = pathtojsonfile,
           OAuth2PrnEmail = "something@somethingelse.iam.gserviceaccount.com",
           OAuth2Scope = "https://www.googleapis.com/auth/adwords",
           DeveloperToken = "********"
        };
        
        var responseMessage = "";
        var client = new GoogleAdsClient(config);
        

        // Get the GoogleAdsService.
        GoogleAdsServiceClient googleAdsService = client.GetService(Services.V6.GoogleAdsService);

        // Create the query.
        string query =
            @"SELECT
             campaign.id,
             campaign.name,
             ad_group.id,
             ad_group.name,
             ad_group_criterion.criterion_id,
             ad_group_criterion.keyword.text,
             ad_group_criterion.keyword.match_type,
             metrics.impressions,
             metrics.clicks,
             metrics.cost_micros
         FROM keyword_view
         WHERE segments.date DURING LAST_7_DAYS
             AND campaign.advertising_channel_type = 'SEARCH'
             AND ad_group.status = 'ENABLED'
             AND ad_group_criterion.status IN ('ENABLED','PAUSED')
         ORDER BY metrics.impressions DESC
         LIMIT 50";

        try
        {
            // Issue a search request.
            await googleAdsService.SearchStreamAsync(customerId.ToString(), query,
                delegate (SearchGoogleAdsStreamResponse resp)
                {
                    // Display the results.
                    foreach (GoogleAdsRow criterionRow in resp.Results)
                    {
                        responseMessage +=
                            "Keyword with text " +
                            $"'{criterionRow.AdGroupCriterion.Keyword.Text}', match type " +
                            $"'{criterionRow.AdGroupCriterion.Keyword.MatchType}' and ID " +
                            $"{criterionRow.AdGroupCriterion.CriterionId} in ad group " +
                            $"'{criterionRow.AdGroup.Name}' with ID " +
                            $"{criterionRow.AdGroup.Id} in campaign " +
                            $"'{criterionRow.Campaign.Name}' with ID " +
                            $"{criterionRow.Campaign.Id} had " +
                            $"{criterionRow.Metrics.Impressions.ToString()} impressions, " +
                            $"{criterionRow.Metrics.Clicks} clicks, and " +
                            $"{criterionRow.Metrics.CostMicros} cost (in micros) during the " +
                            "last 7 days.";
                    }
                }
            );
        }
        catch (GoogleAdsException e)
        {
            responseMessage += "Failure:\n";
            responseMessage += $"Message: {e.Message}\n";
            responseMessage += $"Failure: {e.Failure}\n";
            responseMessage += $"Request ID: {e.RequestId}\n";
            throw;
        }

        return responseMessage;

当我调用此时,我得到以下错误:

{  
  "StatusCode": 16,  
  "Details": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",  
  "RequestId": "0Yk2OYrUATjwftZ5I0qi2g",  
  "Failure": {  
    "errors": [  
      {  
        "errorCode": {  
          "authenticationError": "NOT_ADS_USER"  
        },  
        "message": "User in the cookie is not a valid Ads user."  
      }  
    ]  
  }  
}  

我已经在启用谷歌广告API的情况下设置了服务帐户。为什么它认为我“不是广告用户”???

共有1个答案

何志业
2023-03-14

首先,我们需要理解,函数不应该被用来执行与UI相关的操作。在任何应用服务中,登录的弹出窗口(允许提供凭据)都不受支持。

例如:为了避免这种情况,在AD auth的情况下,我们可以使用服务原则,提供所需的凭证以获取令牌。因此,如果我们想使用google auth SDK,我们需要连接到相关团队(google团队),以了解这是否可行。

为此,您可以检查服务器到服务器服务帐户身份验证,如下所示:

https://cloud.google.com/docs/authentication/production

如果您在这方面需要任何帮助,我们建议您联系相关的支持团队。

 类似资料:
  • 搜索了几天后,我仍然不知道如何让我的laravel web应用程序与azure ad auth一起工作。我希望人们通过azure广告登录。如何做到这一点,我可以从哪里开始?非常感谢任何帮助。

  • 我正在使用api google adwords来生成报告,我可以为活动获得它,但我不能为广告生成报告(我需要获得AdId,AdName,clicks,impressions cost和许多其他数据)。我应该使用哪种类型的报告?我试着用: 但它将错误返回为“未知字段”,或者不返回任何内容。 多谢了。

  • 我合作的公司有许多客户使用谷歌广告为他们的网站做营销。公司希望使用客户的数据进行分析。我得到了一个项目,使用C#集成谷歌广告API,从谷歌广告中获取所有数据,如活动等,并将其移动到我们的系统中为每个客户端。我只给开发人员令牌和客户端的客户ID。例如 客户A的客户ID 客户B的客户ID 当我浏览谷歌广告API文档时,我有点不知所措。在文档中,是OAuth2。0需要创建才能使用客户端库,该库将生成客户

  • 我正在开发一个网络应用程序,代表用户获取谷歌广告活动的信息。我使用的是谷歌提供的python库,但我在获取开始测试API调用的初始凭据时遇到了很多麻烦。 我遵循以下文件:https://github.com/googleads/google-ads-python/wiki/OAuth-Web-Application-Flow 我已经完成了第一步,我有我的客户机密码、客户机ID和重定向uri。 在第

  • 我想得到的活动和广告表现的报告。到目前为止,我已经得到了竞选业绩报告,但我无法得到广告业绩报告。 我在客户端库中看到了谷歌广告api和它们的例子。但我无法理解如何获得广告报道。 我正在制作一个函数,通过谷歌广告api为我获取报告。 谷歌广告Api:https://developers.google.com/google-ads/api/docs/fields/ad_group_ad#ad_grou

  • 目前,Google Assitant包括一种简单的方法来请求有关用户的不可识别信息,以及通过OAuth2在第三方服务上对用户进行身份验证的详细流程。如果我只需要让用户在 Google 上进行身份验证,该怎么办?我尝试使用Google OAuth2信息填写帐户链接流程,但这似乎不起作用。如果最后一件事应该流利地工作,那么这将是一个足够的答案。 上下文:用户已经只在相关网页上使用谷歌进行身份验证。我所