Google DFA报告 - 错误请求(400)无效的ProfileID

时间:2016-03-16 10:47:15

标签: c# .net google-api google-oauth google-api-dotnet-client

我正在尝试使用Double Click for Advertisers API(DFA)。我已经探索过" 试一试"并通过谷歌开发者控制台测试了Api,它按预期工作。我能够捕获授权令牌并执行get和post请求(通过浏览器和编程)。 但是,当我尝试以编程方式使用donet api 2.4进行完全相同时,生成的身份验证令牌不允许我执行任何请求,它始终返回HTTP 400 Bad Request,原因是无效的ProfileID 。

我不确定 client_secrets.json 是否正确,但我已使用可访问报告的同一电子邮件帐户创建了它。

{
  "installed": {

    "client_id": "<client_id>.apps.googleusercontent.com",
    "project_id": "<project_id>",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://accounts.google.com/o/oauth2/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_secret": "<secret>",
    "redirect_uris": [ "urn:ietf:wg:oauth:2.0:oob", "http://localhost" ]
  }
}

我使用了以下凭据代码:

private static readonly IEnumerable<string> scopes = new[] {
  DfareportingService.Scope.Dfareporting,
  DfareportingService.Scope.Dfatrafficking
};    
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                        GoogleClientSecrets.Load(stream).Secrets,
                      scopes,
                        "dfa-user", CancellationToken.None,
                        new FileDataStore("DfaReporting.Samples")).Result;

生成的令牌给我以下信息:

{
 "issued_to": "<client_id>.apps.googleusercontent.com",
 "audience": "<client_id>.apps.googleusercontent.com",
 "scope": "https://www.googleapis.com/auth/dfareporting https://www.googleapis.com/auth/dfatrafficking",
 "expires_in": 3073,
 "access_type": "offline"
}

我上面提到的库可以在GitHub上找到:https://github.com/googleads/googleads-dfa-reporting-samples/tree/master/dotnet/v2.4

我错过了什么?

1 个答案:

答案 0 :(得分:0)

首先确保您已将其设置为correctly

  1. 您必须拥有DCM帐户。有关注册信息,请参阅Advertisers/Agencies
  2. 必须为API Access启用您的DCM帐户。请与您的DoubleClick代表或DCM支持团队联系以获取帮助。 (dcm-support@google.com)
  3. 您必须拥有可以访问此帐户的用户个人资料。让您的DCM帐户管理员创建与此帐户关联的用户个人资料。
  4. 听起来,您尝试使用身份验证的人无法访问您尝试申请的个人资料。

    回应评论:

    如果您使用的是.net客户端库,我不明白您为什么要手动调用以下请求,因为您已注释

    https://www.googleapis.com/dfareporting/v2.4/userprofiles?access_token=<access token> 
    

    我也不明白如果您使用.Net客户端库,以下请求可能会在您不发送时返回无效的配置文件ID。如果用户无权访问任何配置文件,则可能不返回任何配置文件。

    service.UserProfiles.List().Execute();
    

    如果您发送的个人资料ID无效,则可能会返回无效的个人资料ID。

    service.UserProfiles.Get(profileId).Execute();
    

    运行报告

    为了能够运行报告,用户必须有权访问配置文件和报告。您的错误消息表示用户无权访问该配置文件,您需要使用具有访问权限的用户登录或授予用户访问权限。

    service.Reports.Run(profileId,reportId).Execute();