首页 文章

使用google-api-php-client在DoubleClick Search API中遇到空批处理错误

提问于
浏览
2

使用google-api-php-client库将离线转化内容上传到DoubleClick Search时遇到以下错误 .

致命错误:未捕获的异常'Google_Service_Exception',消息'{“错误”:{“errors”:[{“domain”:“global”,“reason”:“requestValidation”,“message”:“请求无效 . 详细信息:[遇到空批处理 . ]“}],”代码“:400,”消息“:”请求无效 . 详细信息:[遇到空批处理 . ]“}}'在/ var / www / ds3 /中vendor / google / apiclient / src / Google / Http / REST.php:118堆栈跟踪:#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 [内部函数]: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 /索尼Clie位于第118行的/var/www/ds3/vendor/google/apiclient/src/Google/Http/REST.php中的nt.php(788)

使用以下代码插入新转换

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);

1 回答

  • 0

    我今天花了一些时间 - 但我想我能够重新创建你的问题并找到解决方案 . 问题在于转换列表的构建方式 .

    使用您当前的方法,您将获得一个类似于以下内容的对象:

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

    你想要的是这样的:

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

    代码的更改将围绕列表本身:

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

    谷歌文档中记录的

相关问题