Что это? (API автономных преобразований Facebook) Ошибка № 21009 - загрузка набора данных временно не готова - PullRequest
0 голосов
/ 10 января 2019

Последние 3 недели мы загружали в API автономного преобразования Facebook без каких-либо проблем. Внезапно 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 голосов
/ 12 января 2019

Я бы добавил комментарий вместо «ответа», но у меня пока не хватает очков. Комментаторы в ветке Facebook (https://developers.facebook.com/support/bugs/1052442614962359/) волшебным образом решили эту проблему за одну ночь, и я испытал то же самое (проблема возникла и без объяснения, затем волшебное разрешение и без объяснения). Кажется, что Facebook, возможно, исправил то, что вызывало вопрос.

...