2017-05-05 6 views
2

Lors du téléchargement de la conversion hors connexion vers DoubleClick Search à l'aide de la bibliothèque google-api-php-client, j'ai rencontré l'erreur suivante.Un lot vide a rencontré une erreur dans l'API DoubleClick Search à l'aide de google-api-php-client

Fatal error: Uncaught exception 'Google_Service_Exception' with message '{ "error": { "errors": [ { "domain": "global", "reason": "requestValidation", "message": "The request was not valid. Details: [Empty batch encountered.]" } ], "code": 400, "message": "The request was not valid. Details: [Empty batch encountered.]" } } ' in /var/www/ds3/vendor/google/apiclient/src/Google/Http/REST.php:118 Stack trace: #0 /var/www/ds3/vendor/google/apiclient/src/Google/Http/REST.php(94): Google_Http_REST::decodeHttpResponse(Object(GuzzleHttp\Psr7\Response), Object(GuzzleHttp\Psr7\Request), 'Google_Service_...') #1 [internal function]: Google_Http_REST::doExecute(Object(GuzzleHttp\Client), Object(GuzzleHttp\Psr7\Request), 'Google_Service_...') #2 /var/www/ds3/vendor/google/apiclient/src/Google/Task/Runner.php(176): call_user_func_array(Array, Array) #3 /var/www/ds3/vendor/google/apiclient/src/Google/Http/REST.php(58): Google_Task_Runner->run() #4 /var/www/ds3/vendor/google/apiclient/src/Google/Client.php(788) in /var/www/ds3/vendor/google/apiclient/src/Google/Http/REST.php on line 118

En utilisant du code ci-dessous pour insérer une nouvelle conversion

putenv('GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_SERVICE_ACCOUNT_JSONFILE.json'); 

$Client = new Google_Client(); 
$Client->useApplicationDefaultCredentials(); 
$Client->addScope(Google_Service_Doubleclicksearch::DOUBLECLICKSEARCH); 

$DS3 = new Google_Service_Doubleclicksearch($Client); 

$Conversion = new Google_Service_Doubleclicksearch_Conversion(); 
$Conversion->setClickId('MY_GCLID'); 
$Conversion->setConversionId('MY_CONV_ID'); 
$Conversion->setConversionTimestamp('MY_CONV_TIMESTAMP'); 
$Conversion->setSegmentationType('FLOODLIGHT'); 
$Conversion->setSegmentationName('MY_FLOODLIGHT_ACTIVITY_NAME'); 
$Conversion->setSegmentationType('ACTION'); 

$ConversionList = new Google_Service_Doubleclicksearch_ConversionList(); 
$ConversionList->setConversion($Conversion); 

$Response = $DS3->conversion->insert($ConversionList); 
print_r($Response); 
+0

Retour à https://github.com/google/google-api-php-client/issues/1213 liens – DaImTo

Répondre

0

m'a pris un certain temps aujourd'hui - mais je pense que j'ai pu recréer votre problème et trouver une solution. Le problème réside dans la façon dont la liste de conversion est construite.

Avec votre approche actuelle, vous obtenez un objet qui ressemble à quelque chose comme:

{ 
    { 
     "clickId": "MY_GCLID", 
     "segmentationName": "MY_SEGMENTATION_NAME", 
     . 
     . 
     . 
    } 
} 

Qu'est-ce que vous voulez, est quelque chose comme ceci:

{ 
    "conversion": [{ 
     "clickId": "MY_CLICK", 
     "conversionId": "MY_CONV", 
     "conversionTimestamp": "MY_TIME", 
     "currencyCode": "USD", 
     "revenueMicros": "SOMEMONEY", 
     "type": "TRANSACTION" 
    }], 
    "kind": "doubleclicksearch#conversionList" 
} 

La modification de votre code serait autour de la liste elle-même:

$ConversionList = new Google_Service_Doubleclicksearch_ConversionList(); 
$ConversionList->setKind('doubleclicksearch#conversionList'); 
$ConversionList['conversion'] = [$Conversion]; // iterator magic