1

我已经花了太多时间来解决这个问题,已经阅读了我能找到的关于这个问题的所有内容,但还没有答案,请帮忙。

我正在尝试使用 facebook 应用程序和 Graph API 在 facebook 页面墙上发布图像:

<?php

$facebook = new Facebook(array(
          'appId'  => $this->settings['app_id'],
          'secret' => $this->settings['app_secret'],
          'fileUpload' => true,
));
$facebook->destroySession();
$filename = dirname(__FILE__) . '/upset.jpg';
$args = array(
    'message' => 'Test',
    'image' => '@' . realpath($filename),
    'access_token' => $this->settings['user_access_token'],
);
try {
    $result = $facebook->api($this->settings['fanpage_id'] . '/photos',
        'post', $args);
    var_dump($result);
}
catch(Exception $e) {
    echo $e->getType() . "\n" . $e->getMessage() . "\n";
}

这段代码确实向页面墙发布了一条消息(当我将 '/photos' 替换为 '/feed' 时),并且真正将照片发布到 USER 墙上(当我将 $this->settings['fanpage_id'] 更改为 $ user_id) 但不是页面墙的照片。

它确实上传了图片:$result 包含上传图片的 id,我可以在 facebook 上看到它,但不是在页面的相册中,而是在用户的相册中。

PS 我试图通过调用 /accounts 来获取页面访问令牌 - 结果相同。PPS 用户访问令牌具有manage_pages、photo_upload 和其他权限(实际上除了offline_access)

4

2 回答 2

2

由于您似乎正在使用当前登录 facebook 用户的访问令牌,那么您可能需要获得manage_pages扩展权限,然后一旦获得许可,您应该能够在粉丝页面墙上发布图像。

编辑 :

此处的扩展权限文档https://developers.facebook.com/docs/authentication/permissions/#page_perms 这是一个可用的教程,展示了如何使用扩展权限获取用户登录 http://thinkdiff.net/facebook/php-sdk -3-0-graph-api-base-facebook-connect-tutorial/

于 2012-08-02T15:22:12.303 回答
-1

似乎解决了。我真的需要使用页面访问令牌而不是用户,而且您不需要参数中的“'no_story' => 1”。

于 2012-08-02T15:40:27.990 回答