我正在尝试使用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
我错过了什么?
答案 0 :(得分:0)
首先确保您已将其设置为correctly。
听起来,您尝试使用身份验证的人无法访问您尝试申请的个人资料。
回应评论:
如果您使用的是.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();