2013-07-11 3 views
2

Привет Я разрабатываю приложение в salesforce для доступа к данным отчетов Google AdWords, например. ADGROUP_PERFORMANCE_REPORT. Я отправляю HTTP-запрос на адрес https://adwords.google.com/api/adwords/reportdownload/v201302, и я использую apex (java как язык в salesforce) ниже, это мой запрос.Как получить отчеты Google AdWords в salesforce?

Http h = new Http(); 
HttpRequest req = new HttpRequest(); 
GoogleAuthorization auth=new GoogleAuthorization(); 
req.setHeader('Authorization', 'GoogleLogin ' + auth.token); 
req.setHeader('UserAgent', 'XXXXX'); 
req.setHeader('developerToken','XXXXXXXX'); 
req.setHeader('clientCustomerId','XXXXXXXX'); 
req.setEndPoint('https://adwords.google.com/api/adwords/reportdownload/v201302'); 
req.setHeader('Content-Type', 'application/x-www-form-urlencoded'); 
req.setMethod('POST'); 
string xml='<reportDefinition xmlns="https://adwords.google.com/api/adwords/cm/v201302">'+ 
      '<selector>'+ 
      '<fields>CampaignId</fields>'+ 
      '<fields>Id</fields>'+ 
      '<fields>Impressions</fields>'+ 
      '<fields>Clicks</fields>'+ 
      '<fields>Cost</fields>'+ 
      '<predicates>'+ 
       '<field>Status</field>'+ 
       '<operator>IN</operator>'+ 
       '<values>ENABLED</values>'+ 
       '<values>PAUSED</values>'+ 
      '</predicates>'+ 
      '</selector>'+ 
      '<reportName>Custom Adgroup Performance Report</reportName>'+ 
      '<reportType>ADGROUP_PERFORMANCE_REPORT</reportType>'+ 
      '<dateRangeType>LAST_7_DAYS</dateRangeType>'+ 
      '<downloadFormat>XML</downloadFormat>'+ 
     '</reportDefinition>'; 
req.setBody('__rdxml='+EncodingUtil.urlEncode(xml, 'UTF-8')); 
HttpResponse res=h.send(req); 

После запроса я получаю AuthenticationError System.HttpResponse [Status = Bad Request, StatusCode = 400].

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><reportDownloadError><ApiError><type>AuthenticationError.USER_ID_INVALID</type><trigger>&lt;null&gt;</trigger><fieldPath></fieldPath></ApiError></reportDownloadError> 

Однако мой логин и пароль верны. То, что я делаю неправильно, может кто-нибудь помочь!

ответ

0

Проверьте конфигурацию своего приложения. Вы должны быть там что-то вроде этого:

<AdWordsApi> 
    <add key="MaskCredentials" value="true" /> 
    <add key="EnableGzipCompression" value="true" /> 
    <add key="ProxyServer" value="" /> 
    <add key="ProxyUser" value="" /> 
    <add key="ProxyPassword" value="" /> 
    <add key="ProxyDomain" value="" /> 
    <add key="UserAgent" value="*******" /> 
    <add key="DeveloperToken" value="*******" /> 
    <add key="ClientCustomerId" value="*******" /> 
    <add key="SkipReportHeader" value="false" /> 
    <add key="SkipReportSummary" value="false" /> 
    <add key="OAuth2ClientId" value="*******" /> 
    <add key="OAuth2ClientSecret" value="*******" /> 
    <add key="OAuth2Mode" value="APPLICATION" /> 
    <add key="OAuth2RefreshToken" value="1/*******" /> 
</AdWordsApi> 

заполнить все необходимые значения *****.