Php 无法理解Facebook未捕获异常

Php 无法理解Facebook未捕获异常,php,facebook-graph-api,facebook-php-sdk,batch-processing,Php,Facebook Graph Api,Facebook Php Sdk,Batch Processing,我是Facebook PHP SDK的新手。我无法理解下面的堆栈跟踪;我应该在哪里查找错误 Facebook计划的帖子正在成功处理中,但是,这个错误导致了糟糕的用户体验,但是,我的程序中的其他一切都正常工作。看起来它可能试图处理一些不存在的东西 正在执行的最后一行代码(我知道,因为我的Facebook测试帐户中显示了预定的帖子)是: $batch定义为: foreach($esdarr as $key => $event_start_datetime){$sched_time = strt

我是Facebook PHP SDK的新手。我无法理解下面的堆栈跟踪;我应该在哪里查找错误

Facebook计划的帖子正在成功处理中,但是,这个错误导致了糟糕的用户体验,但是,我的程序中的其他一切都正常工作。看起来它可能试图处理一些不存在的东西

正在执行的最后一行代码(我知道,因为我的Facebook测试帐户中显示了预定的帖子)是:

$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;
    }
这都在一个带有公共函数add()的CI控制器(event.php)中。然后我得到这个错误:

 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
如果我将FacebookBatchRequest.php的第85行更改如下(即:将页面重定向到CI结构中的正确URL),一切似乎都正常工作:

 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,
    ];
当然,这充其量只是一个脆弱的解决办法。因此,我想知道为什么首先抛出错误。

如果在程序中定义了add(),并且add()也内置在SDK中,那么它将无法工作。尝试使用其他名称。

如果这不是问题,你能发布你的代码吗?也许我们中的一个人能找到它。

你用什么语言?可能您只是有语法错误。

我希望这对你有所帮助

如果您在程序中定义了add(),并且add()也内置在SDK中,那么它将无法工作。尝试使用其他名称。

如果这不是问题,你能发布你的代码吗?也许我们中的一个人能找到它。

你用什么语言?可能您只是有语法错误。


我希望这对你有所帮助

好吧,这是我对批处理过程的错误使用

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

好吧,这是我对批处理过程的错误使用

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