在非对象上调用成员函数setFileUploadSupport()

时间:2012-03-06 19:09:24

标签: php facebook facebook-graph-api

我正在开发我的第一个Facebook应用程序,其中包括创建一个新专辑并将照片发布到用户墙。

通过了解facebook文档和一些教程,并提出了这段代码,但我收到了以下错误。

致命错误:在非对象上调用成员函数setFileUploadSupport()...

        $facebook -> setFileUploadSupport(true);
        $album_details = array('message' => 'Album desc', 'name' => 'Album name');
        $create_album = $facebook -> api('/me/albums', 'post', $album_details);
        $album_uid = $create_album['id'];

        $photo_details = array('message' => 'Photo message');
        $file = 'app.jpg';
        $photo_details['image'] = '@' . realpath($file);

        $upload_photo = $facebook -> api('/' . $album_uid . '/photos', 'post', $photo_details);

请帮助我。三江源

3 个答案:

答案 0 :(得分:1)

您是否已将变量($ facebook)实例化为对象类?

示例:

include('class.Facebook.php');
$facebook = new Facebook();

答案 1 :(得分:1)

您需要先通过创建新对象来实例化该类。你还需要传递$ config数组 - 因为构造函数缺少1个参数&#39 ;;那是你得到的错误。

// Create facebook object.
$config = array(
'appId'  => 'app id',
'secret' => 'app secret',
'fileUpload' => true
);

// Initiate the library
$facebook = new Facebook($config);

替换' app id'和'app secret'与您在创建Facebook应用程序时获得的那个。

编辑:在代码中添加了一个小的更改。 $ config在数组中使用第三个可选元素,称为fileUpload(一个布尔值,指示是否启用了文件上传)。您需要设置此项,因为您调用了setFileUploadSupport()方法。或者另一种方法是像你一样编写并直接在setFileUploadSupport(true)中传递布尔值。无论哪种方式都有效。

答案 2 :(得分:1)

您需要实例化具有文件上载支持的类并请求正确的权限。

$facebook = new Facebook(array(
    'appId'  => 'YOUR_APP_ID',
    'secret' => 'YOUR_APP_SECRET',
    'fileUpload' => true // enable file upload support
));

// get a login url with the correct perms
$facebook->getLoginUrl(array(
  'scope' => 'photo_upload,first_name,email,publish_stream,read_stream'
));

photo_upload是此处的关键权限,允许您上传照片。