Facebook。 API。如何在用户墙上发布照片

标签 facebook facebook-graph-api

我有疑问如何将照片发布到用户的墙上?我读了很多教程,但出了点问题。 最后我做了什么,遵循本教程: http://www.masteringapi.com/tutorials/how-to-upload-a-photo-to-a-users-profile-using-facebook-graph-api/66/

我已经设置了publish_stream的权限。我现在没有收到任何错误,只是没有在墙上张贴照片。也许有什么问题 $文件位置...我不知道,如果可以的话请帮助我。非常感谢。

最佳答案

  • 确保 SDK 已正确加载。
  • 您的应用需要 photo_uploadpublish_stream 权限。
  • $file 应该是图像的相对路径。即例如:/path/to/image/file
  • 您传递的 POST 参数应该是 image 而不是 source

所以现在最终版本应该如下所示(修复上述问题后):

<?php
require_once('images/Facebook.php');

  $facebook = new Facebook(array(
    'appId'  => 'YOUR_APP_ID',
    'secret' => 'YOUR_APP_SECRET',
  ));

  # Get User ID
  $user = $facebook->getUser();

  if ($user) {
    try {

      # Photo Caption
      $photoCaption = 'My Photo Caption!';

      # Relative Path to your image.
      $file = 'plaukai/images/PlaukaiNeuzvedus.jpg';

      # Post Data for Photos API
      $post_data = array(
          'message' => $photoCaption,
          'source' => '@' . realpath( $file )
      );

      $apiResponse = $facebook->api('/me/photos', 'POST', $post_data);

    } catch (FacebookApiException $e) {
      $user = null;
      error_log($e);
    }
  } else {
    $loginUrl = $facebook->getLoginUrl( array(
        'scope' => 'publish_stream,photo_upload'
    ));
    echo("<script>top.location.href = '" . $loginUrl . "';</script>");
  }
?>

注意:我已经删除了 setAccessToken/getAccessToken,因为除非它们与其他代码一起使用,否则不需要这些,因为 SDK 会自动传递当前的 access_token当您的应用进行任何 API 调用时,用户。

希望对您有所帮助,如果您有任何疑问,请告诉我。

PS我还没有测试过上面的代码,但除非有任何其他问题,否则它必须工作。

编辑1:

也尝试以下解决方案之一:

解决方案1:

  # Photo Caption
  $photoCaption = 'My Photo Caption!';

  # Relative Path to your image.
  $file = 'plaukai/images/PlaukaiNeuzvedus.jpg';

  # Post Data for Photos API
  $post_data = array(
      'message' => $photoCaption,
      'image' => '@' . realpath( $file )
  );

解决方案2:

  # Photo Caption
  $photoCaption = 'My Photo Caption!';

  # Absolute Path to your image.
  $imageUrl = 'http://placehold.it/500x500/'; // Example URL

  # Post Data for Photos API
  $post_data = array(
      'message' => $photoCaption,
      'url' => $imageUrl
  );

编辑2:

这是您请求的代码:

$redirectUri = 'http://domain.com/myapp/';

$loginUrl = $facebook->getLoginUrl( array(
    'scope' => 'publish_stream,photo_upload',
    'redirect_uri' => $redirectUri
));

echo("<script>top.location.href = '" . $loginUrl . "';</script>");

关于Facebook。 API。如何在用户墙上发布照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14504397/

相关文章:

Facebook API 获取状态

facebook - FB iframe Canvas 高度

ios - Facebook iOS : requestNewPublishPermissions not asking user for new authority

facebook - 使用 Graph API 发送自定义 Facebook 消息以邀请 friend 访问网站

facebook-graph-api - 当我在客户端上执行 Facebook.requestCredential 时,如何在 Meteor 中获取凭据 secret ?

javascript - Facebook Messenger 网站插件 greeting_dialog_display 不工作

php - Facebook API 搜索 - 搜索群组?

Facebook API 重定向到错误的地方

c# - 为什么 Facebook 发布批处理失败并出现 GraphBatchException - #0?

来自 node.js 的 Facebook access_token 失败