【问题标题】:Facebook app can post messages on a fanpage wall but can't upload imagesFacebook 应用程序可以在粉丝专页墙上发布消息,但不能上传图片
【发布时间】:2012-08-02 12:29:47
【问题描述】:

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

我正在尝试使用 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 上看到它,但不是在页面的相册中,而是在用户的相册中。

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

【问题讨论】:

    标签: php facebook facebook-graph-api


    【解决方案1】:

    您似乎正在使用当前登录 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/

    【讨论】:

    • 我必须把 manage_pages 给应用程序,对吧?你能用几句话告诉我如何检查以及如何实际赋予这些权利吗?我不确定。
    • 是的,我还更新了我的答案并为您添加了一些参考资料。检查它们,看看是否有帮助。
    • manage_pages 并通过“照片”更改“提要”是我的关键。谢谢。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多