这是什么? (Facebook离线转化API)错误#21009-数据集上传暂时未准备好

时间:2019-01-10 20:05:18

标签: facebook facebook-graph-api sdk facebook-marketing-api

过去3周来,我们一直没有问题地上传到Facebook的Offline Conversion API。突然,Facebook返回了此错误:

(#21009) The data set upload is temporarily not ready.

有关完整的JSON有效负载,请参见下面的代码。

我们的身份验证令牌仍然有效。 (例如,未过期,仍然有效) 根据此工具:https://developers.facebook.com/tools/debug/accesstoken/

# I had to remove these fields for privacy reasons
define('FACEBOOK_APP_ACCESS_TOKEN', 'YOUR TOKEN HERE');
define('FACEBOOK_PIXEL_OFFLINE_EVENT_SET_ID', 'YOUR PIXEL ID HERE');


# Be sure to change the email/name fields accordingly
$event_name='test-upload';
$data = array();
$data["match_keys"] = array();
$data["match_keys"]['email'] = hash('sha256', 'bob.ross@example.com');
$data["match_keys"]['fn'] = hash('sha256', 'bob');
$data["match_keys"]['ln'] = hash('sha256', 'ross');
$data["match_keys"]['gen'] = hash('sha256', 'm');
$data["event_time"] = time();
$data["event_name"] = $event_name;
$data["currency"] = "USD";
$data["value"] = '0.00';

// Turn Data to JSON
$data_json = json_encode(array($data));

// Fill available fields
$fields = array();
$fields['access_token'] = FACEBOOK_APP_ACCESS_TOKEN;
$fields['upload_tag'] = $event_name . '-' . time(); // You should set a tag here (feel free to adjust)
$fields['data'] = $data_json;


$url = 'https://graph.facebook.com/v3.2/' . FACEBOOK_PIXEL_OFFLINE_EVENT_SET_ID . '/events';
$curl = curl_init($url);

curl_setopt_array($curl, array(
    // Replace with your offline_event_set_id
    CURLOPT_URL => 'https://graph.facebook.com/v3.2/' . FACEBOOK_PIXEL_OFFLINE_EVENT_SET_ID . '/events', 
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS =>  http_build_query($fields),
    CURLOPT_HTTPHEADER => array(
        "cache-control: no-cache",
        //"content-type: multipart/form-data",
        "Accept: application/json"  ),
));


$response = curl_exec($curl);
curl_close($curl);

echo $response;

Facebook的预期结果:

{"id":"36485444079550","num_processed_entries":1}

Facebook的实际结果

{
  "error": {
    "message": "(#21009) The data set upload is temporarily not ready.",
    "type": "OAuthException",
    "code": 21009,
    "fbtrace_id": "GeofD5QsXdI"
  }
}

1 个答案:

答案 0 :(得分:1)

我要添加评论而不是“答案”,但是我还没有要点。 Facebook主题(https://developers.facebook.com/support/bugs/1052442614962359/)上的评论者已经在一夜之间神奇地解决了这一问题,而我也经历了同样的事情(问题发生了,没有任何解释,然后魔术般的解决了,没有任何解释)。看来Facebook可能已经解决了导致此问题的任何原因。