0

如何将上传的照片发布到用户的墙/提要?

我的应用程序会生成一个包含用户名和一些信息的图像。它看起来像一个证书。我将此图像上传到用户的个人资料,但它没有出现在提要中。所以朋友们看不到。我试图用 -

$post = $facebook->api('/me/feed', 'POST', array(...)); 

但我意识到,我不能发布 Facebook 托管的照片。但是 Facebook 上有许多应用程序可以生成图像、上传它们并将它们发布到墙上。但是怎么做?

4

2 回答 2

1

您可以将 facebook 托管的图片发布到用户的墙上。您需要做一个简单的墙贴,并包含object_attachment参数,其中包含图片的 id。它记录在这里,靠近表格的底部。

您可以在这篇博文中找到更多详细信息。它还包含以下示例:

<?php
  $app_id = "APP_ID";
  $app_secret = "APP_SECRET";
  $post_login_url = "POST_AUTH_REDIRECT_URL";
  $photo_id = "PHOTO_ID";
  $wall_message = "MESSAGE_FOR_POST";
  $wall_link = "LINK_TO_POST";
  $user_id = "USER_ID";

  $code = $_REQUEST["code"];

  // Obtain the access_token with publish_stream permission 
  if (!$code) {
    $dialog_url= "http://www.facebook.com/dialog/oauth?"
      . "client_id=" .  $app_id
      . "&redirect_uri=" . urlencode( $post_login_url)
      .  "&scope=publish_stream";
    echo("<script>top.location.href='" . $dialog_url
      . "'</script>");
  } else {
    $token_url="https://graph.facebook.com/oauth/access_token?"
      . "client_id=" . $app_id
      . "&redirect_uri=" . urlencode( $post_login_url)
      . "&client_secret=" . $app_secret
      . "&code=" . $code;
    $response = file_get_contents($token_url);
    $params = null;
    parse_str($response, $params);
    $access_token = $params['access_token'];

    // POST to Graph API feed endpoint, which is the user's Wall
    $graph_url= "https://graph.facebook.com/" . $user_id . "/feed?"
      . "message=" . urlencode($wall_message)
      . "&link=" . urlencode($wall_link)
      . "&object_attachment=" . $photo_id
      . "&method=POST"
      . "&access_token=" .$access_token;

    echo '<html><body>';
    echo file_get_contents($graph_url);
    echo '</body></html>';
  }
?>
于 2012-07-15T10:51:46.017 回答
0

正如您所说,您不能将 Facebook 托管的图像发布回 Facebook。在我看来,你有两个选择。

  1. 将图像下载到您的服务器并再次将其上传到用户提要。

  2. 只需在用户供稿上发布指向该 photo_object 的链接。Facebook 的爬虫将成功地从该链接中提取相关数据,您仍然可以预览帖子中的图像。

当您使用 photo_id 查询 Graph API -
示例 - https://graph.facebook.com/10151812415573306 (可口可乐页面上的公开照片)时,您会获得有关该图像的一些信息。数据看起来像这样 -

    {
      "id": "10151812415573306",
      “从”: {
        “名称”:“可口可乐”,
        “类别”:“食品/饮料”,
        “id”:“40796308305”
      },
      "图片": "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash3/521913_10151812415573306_523748375_s.jpg",
      “来源”:“https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash3/521913_10151812415573306_523748375_n.jpg”,
      “身高”:332,
      “宽度”:500,
       ...
      "链接": "https://www.facebook.com/photo.php?fbid=10151812415573306&set=a.99394368305.88399.40796308305&type=1",
      "图标": "https://s-static.ak.facebook.com/rsrc.php/v2/yz/r/StEh3RhPvjk.gif",
      "created_time": "2012-07-09T12:00:41+0000",
      ...

您需要在用户提要上发布的参数是link参数 -
https://www.facebook.com/photo.php?fbid=10151812415573306&set=a.99394368305.88399.40796308305&type=1

当您在用户提要/墙上发布该 URL 时 - 该帖子将包含图像预览和照片本身的链接(在 Facebook 内)。

于 2012-07-15T10:36:37.483 回答