上传Facebook活动图片时出现错误

3
我正在尝试创建带图片的活动,但是当我将图片上传到Facebook时,它会抛出一个错误(#324)缺少或无效的图像文件
这是用于上传图片的函数。
public function uploadFacebookEventPicture($fullPath, $eventId) {
    $mainImage = '@' . $fullPath;   
    $imgData = array(
        'picture' => $mainImage
    );
    try {
        $data = $this->facebook->api('/'.$eventId, 'post', $imgData);
        return $data;
    } catch (FacebookApiException $e) {
        error_log('Failed to attach picture to event. Exception: ' . $e->getMessage());
    }       
    return null;
} 

表单提交后我使用的代码段

if ($file[$name]['error'] == 0) {
                                    $fileName = $file[$name]['name'];
                                    $fileInfo = pathinfo($fileName);
                                    $newFileName = md5($fileName . microtime()) . '.' . $fileInfo['extension'];
                                    $fullPath = $this->config->applications->uploadPath . $newFileName;
                                    $form->$name->addFilter('Rename', $fullPath);

                                    if ($form->$name->receive()) {
                                        $resize = new SimpleImage();
                                        $resize->load($fullPath);
                                        $resize->resizeToWidth($this->config->applications->resize->width);
                                        $resize->save($fullPath);
                                        // Gathering data for saving files information
                                        $fileInfo = array(
                                            'name' => $newFileName,
                                            'type' => FileTypes::IMAGE,
                                            'description' => 'Application: Uploaded from Events form in back-end',
                                        );

                                        $fileId = $dbFiles->save($fileInfo);

                                        $eventFileData = array(
                                            'event_id' => $eventId,
                                            'file_id' => $fileId,
                                            'main_image' => ($name == 'mainImage') ? 1 : 0
                                        );                                  
                                        $dbEventFiles->save($eventFileData);
                                        if ($name === 'mainImage') {
                                            $success = **$this->uploadFacebookEventPicture($fullPath, $eventData['fb_event_id']**);
                                        }
                                    }
                                }

创建Facebook对象,并设置上传文件为true。

 $facebook = new Facebook(array(
                'appId' => $config->facebook->appId,
                'secret' => $config->facebook->secret,
                'fileUpload' => true
            ));

是的,图片已经上传、存储并且我可以在应用程序的前端浏览器中查看它,但是 Facebook 不想使用它。 - divide by zero
2
根据 https://developers.facebook.com/docs/reference/api/event/#picture,参数必须命名为 source(您现在正在使用 picture),并且您必须将其发布到 /EVENT_ID/picture – 请尝试一下。 - CBroe
1
公共函数uploadFacebookEventPicture($fullPath, $eventId) { $imgData = array( 'picture' => '@' . realpath($fullPath) ); try { $data = $this->facebook->api('/'.$eventId . '/picture', 'post', $imgData); return $data; } catch (FacebookApiException $e) { error_log('无法将图片添加到事件。异常:' . $e->getMessage()); die($e->getMessage()); }
return null; }尚未解决问题,但现在脚本没有捕获错误,但图片仍然不显示,file_exists和is_readable为true,已经检查过了。
- divide by zero
1
不帮助 :( 和上面的代码一样的行为 - divide by zero
2
看起来这个问题的原因是Facebook bug - Darvex
显示剩余5条评论
1个回答

1
根据 Facebook 的漏洞跟踪器,此漏洞已经修复: 漏洞跟踪器帖子
Status changed to Fixed

上面的代码可以很好地上传Facebook活动图片。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接