【发布时间】:2014-04-17 23:58:51
【问题描述】:
我想将一张照片发布到我能够管理的粉丝页面(作为正常的时间线状态提要)。
我的应用获得了以下权限:
email,publish_actions,read_stream,manage_pages
它非常适合我自己的时间线。我还可以在页面的时间轴上发布照片。但是为什么不通过应用呢?
我也想通了,权限 照片上传 不会产生任何影响。也许 Facebook 已将其删除。
我的应用使用 Facebook PHP-SDK。
如果我尝试将照片上传到粉丝页面,它会返回异常:
Fatal error: Uncaught OAuthException: (#200) Subject does not have permission to post photos on this page thrown
这是我从粉丝页面获取访问令牌的方式:
public function getPageData()
{
$arRS = $this->facebook->api('/me/accounts');
$pageData = new CFacebookClientPageData();
foreach ($arRS['data'] as $dataSet)
{
if (array_key_exists('name', $dataSet) && preg_match('/any\s*fan\s*page/i', $dataSet['name']))
{
$pageData->sCategory = $dataSet['category'];
$pageData->sName = $dataSet['name'];
$pageData->sAccessToken = $dataSet['access_token'];
$pageData->arPermissions = $dataSet['perms'];
$pageData->iPageId = $dataSet['id'];
}
}
return $pageData;
}
这是我尝试发布它的方式:
public function uploadPhoto(CFacebookClientPageData $user, CFacebookPhotoData $photo)
{
return $this->facebook->api('/' . $user->iPageId . '/photos',
'POST',
array(
'source' => '@' . realpath($photo->sLocalPath),
'message' => $photo->sMessage,
'access_token' => $this->sAccessToken
)
);
}
在其他文件中我这样称呼它:
$fb = new CFacebookClient($sAppId, $sSecret);
$fb->init();
$fb->setFileUpload(true);
$fb->init();
$user = $fb->getPageData();
$fb->setAccessToken($user->sAccessToken);
$photo = new CFacebookPhotoData();
$photo->sLocalPath = 'E:\php\www\logo.png';
$photo->sMimeType = 'image/png';
$photo->sMessage = utf8_encode('posted from my fresh app :-)');
var_dump($fb->uploadPhoto($user, $photo));
编辑:正如我在下面的评论中提到的那样解决了:我在 sn-p 中修复了它,但在我的代码中没有。
【问题讨论】:
标签: facebook facebook-graph-api facebook-php-sdk facebook-apps facebook-timeline