2014-01-29 28 views
1
private async Task Run() 
    { 
     //setting up OAuth 2.0 authentication 
     ClientSecrets secret = new ClientSecrets 
     { 
      ClientId = <My ID Here>, 
      ClientSecret = <My Secret Here> 
     }; 

     UserCredential credentials = await GoogleWebAuthorizationBroker.AuthorizeAsync(secret, new[] { Scope }, "user", CancellationToken.None); 

     //create the service 
     service = new DoubleclicksearchService(new BaseClientService.Initializer() 
     { 
      HttpClientInitializer = credentials, 
      ApplicationName = <My Application Name Here> 
     }); 

     //make request to download keywords; response variable will hold Id of generated report 
     Report response = await service.Reports.Request(CreateRequestBody()).ExecuteAsync(); 

     Console.WriteLine("Created Report: ID={0}", response.Id); 
    } 

DoubleClick Search API的首次使用者。上面的代码是我的代码片段,试图发出关键字报告请求。但是,每次运行时,service.Reports.Request行都会引发异常。具体错误是:DoubleClick Search API 403提出请求时的错误

"Google.Apis.Requests.RequestError\r\nForbidden [403]\r\nErrors [\r\n\tMessage[Forbidden] Location[ - ] Reason[forbidden] Domain[global]\r\n]\r\n" 

任何想法这里发生了什么?如果我在没有ExecuteAsync()部分的情况下进行调用,它可以正常工作,但是我无法获得提交的报告的Id。

回答

0

对于那些感兴趣的,看来ExecuteAsync是在这里使用的错误方法。我相信,检索包含正在生成的报告的ID的报告对象不是异步创建的。当我将最后一位代码更改为

//make request to download keywords; response variable will hold Id of report to be generated 
var request = service.Reports.Request(CreateRequestBody()); 
response = request.Execute(); 
Console.WriteLine("Report being generated. Report ID: {0}", response.Id); 

它按预期工作。

+0

ApplicationName = <我的应用程序名称在这里>的值有多重要。它究竟是什么? –

相关问题