我编写了一个将照片发布到用户墙的功能,它引发了以下异常
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尝试更多控制,显然我需要一个用户访问令牌 - 即使我正在检索并使用应用程序访问令牌 - 显然有两个不同的。
答案 0 :(得分:1)
当您获得loginURL时,您还需要让用户授予您publish_stream
和manage_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它必须将图像作为多部分数据发送。