将照片发布到Facebook会引发异常

时间:2011-12-13 18:53:49

标签: php facebook

我编写了一个将照片发布到用户墙的功能,它引发了以下异常

Fatal error: Uncaught OAuthException: A user access token is required to request this resource. thrown in C:\xampp\htdocs\upd8r\application\helpers\base_facebook.php on line 1039

这是我的代码 - 我缺少什么?

function facebook_img_post($fb_id,$data){


        $this->load->helper('facebook');

        $this->load->model('mmaster');
        $globalSettings = $this->mmaster->getGlobalSettings('1');

        // Create our Application instance.
        $this->facebook = new Facebook(array(
          'appId'  => $globalSettings['facebook_id'],
          'secret' => $globalSettings['facebook_secret'],
          'cookie' => false
        ));

        $this->facebook->setFileUploadSupport(true);


        $this->facebook->api("/".$fb_id."/photos",'post', array(
                'message'=> $data['message'],
                'source' => $data['source']
            )
        );





        //new fb post

    }

更新

这是用户注册的链接,显示了所有请求的权限

$data['loginUrl']   =   $this->facebook->getLoginUrl(array('scope' => 'read_stream,publish_stream,status_update,offline_access'))

更新2

我将api交换出来并用curl尝试更多控制,显然我需要一个用户访问令牌 - 即使我正在检索并使用应用程序访问令牌 - 显然有两个不同的。

2 个答案:

答案 0 :(得分:1)

当您获得loginURL时,您还需要让用户授予您publish_streammanage_page权限才能执行此操作,例如

$loginUrl = $facebook->getLoginUrl(
    array(
        'scope' =>'user_status,user_photos,status_update,manage_pages,publish_stream,offline_access',
        'redirect_uri'  => $fbconfig['baseurl']
        )
);

以下是一些更多信息: FB权限:http://developers.facebook.com/docs/reference/api/permissions/

连接到FB的教程,包括要求权限:http://thinkdiff.net/facebook/php-sdk-3-0-graph-api-base-facebook-connect-tutorial/

答案 1 :(得分:1)

您需要使用publish_stream权限

请求访问令牌

查看此链接:

<强>更新

new Facebook创建实例后,您必须重定向到FB以进行用户身份验证:

$loginUrl = $this->facebook->getLoginUrl(array('scope' => 'publish_stream, offline_access'));
echo '<script>top.location.href="'.$loginUrl.'"</script>';

第二次更新

如果你以这种方式做所有事情并且问题仍然存在,那么也许你正在传递图像数据以不正确地卷曲。您必须在@前面添加图像路径,以通知CURL它必须将图像作为多部分数据发送。