【问题标题】:Facebook. api. How to publish photo on the user's wall [closed]Facebook。 api。如何在用户的墙上发布照片[关闭]
【发布时间】:2014-02-13 03:17:36
【问题描述】:

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

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

【问题讨论】:

  • 这实际上帮助了我,所以也许它不应该被关闭。

标签: facebook facebook-graph-api


【解决方案1】:
  • 确保 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>");

【讨论】:

  • 感谢您的回答。我使用您的代码,我只更改了addIdsecret,但还是一样,没有发布照片,我也没有收到任何错误。我添加了photo_upload 许可。我需要使用哪一个"Auth Token Parameter"Query String 还是 URI Fragment?任何想法有什么问题?我有“在用户墙上发布文本”的代码,它工作正常,我不明白为什么这不起作用。
  • 我的应用程序仍在审核中Live Your App Detail page is live and available in search. Your app does not have enough high ratings and user engagement to be approved for listing in the App Center at this time. Please view our App Center Guidelines for more information. 也许在这种情况下不能上传照片?也许您知道我需要等待多少时间才能让我的应用获得批准?
  • 不,事实并非如此。至于访问令牌,如果您使用的是官方 SDK,则无需执行任何操作。还尝试将 source 更改为 image 吗?我已经测试过了,效果很好。
  • 我的意思是在$post_data 中将source 键更改为image 然后运行该文件,看看它是否适合您?
  • 天哪,谢谢!!!在花费了 10000 小时后,您给了我正确的解决方案:) Solution 2 为我工作。以及redirect_uri 的外观如何?还有一个问题。当我第二次尝试登录我的应用程序时(删除后)它尝试登录 https://... 但为什么呢?并且总是当我使用其他 Facebook 帐户尝试我的程序时,它使用 https 协议,我得到错误:Looks like this page unsave... leave this page... 我无法从 https 更改为 http...谢谢你所做的一切。
猜你喜欢
  • 1970-01-01
  • 2011-10-05
  • 1970-01-01
  • 2012-07-11
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多