Проблемы с пониманием Facebook Uncaught Exception

Я супер новичок в Facebook PHP SDK. У меня проблемы с пониманием трассировки стека ниже; где искать ошибку?

Запланированные сообщения Facebook успешно обрабатываются, однако, эта ошибка вызывает плохой пользовательский опыт, но все остальное в моей программе работает нормально. Похоже, он пытается обработать что-то, чего нет.

Последняя строка исполняемого кода (я знаю, потому что запланированные сообщения отображаются в моей тестовой учетной записи Facebook):

$responses = $fb->sendBatchRequest(($batch), $this->session->userdata('fb_access_token'));

$ batch определяется как:

foreach($esdarr as $key => $event_start_datetime){$sched_time = strtotime($event_start_datetime)- 18000;
$event_end_datetime = $eedarr[$key];
$requestScheduleEvent = $fb->post('/'.$band_page_id.'/feed', ['message' => $band_name.' is playing today at '.$venue_name.' '.date('(l), g:ia', strtotime($event_start_datetime)), 'published'=>false, 'scheduled_publish_time'=>$sched_time], $pageToken);
$batch[$key]=$requestScheduleEvent;
}

Это все в CI Controller (event.php) с публичной функцией add (). Тогда я получаю эту ошибку:

 Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Argument for add() must be of type array or FacebookRequest.' in /home/my_user/public_html/development/application/vendor/facebook/php-sdk-v4/src/Facebook/FacebookBatchRequest.php:85 Stack trace:
#0 /home/my_user/public_html/development/application/vendor/facebook/php-sdk-v4/src/Facebook/FacebookBatchRequest.php(78): Facebook\FacebookBatchRequest->add(Object(Facebook\FacebookResponse), 0)
#1 /home/my_user/public_html/development/application/vendor/facebook/php-sdk-v4/src/Facebook/FacebookBatchRequest.php(61): Facebook\FacebookBatchRequest->add(Array)
#2 /home/my_user/public_html/development/application/vendor/facebook/php-sdk-v4/src/Facebook/Facebook.php(492): Facebook\FacebookBatchRequest->__construct(Object(Facebook\FacebookApp), Array, 'EAAYzEGW0ZAsoBA...', 'v2.7')
#3 /home/my_user/public_html/development/application/controllers/user/event.php(777): Facebook\Facebook->sendBatchRequest(Array, 'EAAYzEGW0ZAsoBA...')
#4 [internal function]: Event->add in /home/my_user/public_html/development/application/vendor/facebook/php-sdk-v4/src/Facebook/FacebookBatchRequest.php on line 85

Если я изменю строку # 85 в FacebookBatchRequest.php следующим образом (то есть перенаправим страницу на правильный URL-адрес в структуре CI), все будет работать нормально:

 public function add($request, $name = null)
{
if (is_array($request)) {
foreach ($request as $key => $req) {
$this->add($req, $key);
}

return $this;
}

if (!$request instanceof FacebookRequest) {
***redirect('user/event');***
throw new \InvalidArgumentException('Argument for add() must be of type array or FacebookRequest.');
}

$this->addFallbackDefaults($request);
$requestToAdd = [
'name' => $name,
'request' => $request,
];

Конечно, в лучшем случае это обходной путь. Итак, я хотел бы знать, почему ошибка выдается в первую очередь.

1

Решение

Если вы определили add () в своей программе и add () также встроен в SDK, он не будет работать. Попробуйте использовать другое имя.

Если это не проблема, не могли бы вы опубликовать свой код? Возможно, один из нас сможет найти его.

Какой язык вы используете? Возможно, у вас просто ошибка синтаксиса.

Я надеюсь, что это поможет в любом случае!

0

Другие решения

Хорошо, это закончилось тем, что я ошибочно использовал пакетный процесс.

$requestScheduleEvent = $fb->post('/'.$band_page_id.'/feed', ['message' => $band_name.' is playing today at '.$venue_name.' '.date('(l), g:ia', strtotime($event_start_datetime)), 'published'=>false, 'scheduled_publish_time'=>$sched_time], $pageToken);

Необходимо использовать метод запроса:

$batch[$key] = $fb->request('POST', '/'.$band_page_id.'/feed', ['message' => $band_name.' is playing today at '.$venue_name.' '.date('(l), g:ia', strtotime($event_start_datetime)), 'published'=>false, 'scheduled_publish_time'=>$sched_time], $pageToken);
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector