1
votes

I'm trying to get daily costs of my campaigns. I use this documentation https://developers.google.com/adwords/api/docs/guides/reporting

I am also using php and Yii2. I've got:

client Customer Id

client id
access token
client_secret

refresh_token

When I get Campaigns names and ids, those client Customer Id,client id,client_secret are enough and I get campaigns without any problem but when I try to get a report, there is the error

string(581) "HTTP/1.1 400 Bad Request
Content-Type: text/xml
Date: Mon, 22 May 2017 10:31:52 GMT
Expires: Mon, 22 May 2017 10:31:52 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Accept-Ranges: none
Vary: Accept-Encoding
Transfer-Encoding: chunked

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><reportDownloadError><ApiError><type>ReportDownloadError.INVALID_PARAMETER</type><trigger>Missing client information</trigger><fieldPath></fieldPath></ApiError></reportDownloadError>"

Maybe I make post request with curl wrong, since I'm able to get campaigns without mistakes. Here is my code

$ch = curl_init();

        curl_setopt($ch, CURLOPT_URL,"http://adwords.google.com/api/adwords/reportdownload/v201702");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch,CURLOPT_HEADER,1);

$XML= <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<reportDefinition xmlns="https://adwords.google.com/api/adwords/cm/v201702">
    <selector>
        <fields>CampaignId</fields>
        <fields>AdGroupId</fields>
        <fields>Impressions</fields>
        <fields>Clicks</fields>
        <fields>Cost</fields>
        <predicates>
            <field>AdGroupStatus</field>
            <operator>IN</operator>
            <values>ENABLED</values>
            <values>PAUSED</values>
        </predicates>
    </selector>
    <reportName>Custom Adgroup Performance Report</reportName>
    <reportType>ADGROUP_PERFORMANCE_REPORT</reportType>
    <dateRangeType>TODAY</dateRangeType>
    <downloadFormat>CSV</downloadFormat>
</reportDefinition>
XML;

$headers = array("Content-Type:multipart/form-data",
 "Authorization"=> "Bearer my_access_token",
  "developerToken" => "my_developer_token",
 "clientCustomerId"=> 111-111-1111, // test account

); 

$postfields = array("__rdxml" =>$XML );
        curl_setopt($ch, CURLOPT_HTTPHEADER , $headers);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);


 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $server_output = curl_exec ($ch);
 echo "<pre>";
var_dump($server_output);
echo "</pre>";
        curl_close ($ch);
1

1 Answers

0
votes

It turned out that I generated wrong access token. When I generated it as described here https://developers.google.com/identity/protocols/OAuth2WebServer#incrementalAuth Everything worked successfully.