如何将上传的照片发布到墙上?

时间:2012-07-15 10:26:00

标签: php facebook facebook-graph-api

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

我的应用程序生成一个包含用户名和一些信息的图像。它看起来像一个证书。我将此图片上传到用户的个人资料,但它没有显示在Feed上。所以朋友们没有看到。我试着用 -

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

但我意识到,我无法发布Facebook托管的照片。但Facebook上有许多应用程序可生成图像,上传图像并将其发布到墙上。但是如何?

2 个答案:

答案 0 :(得分:1)

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

您可以在this blogpost中找到更多详细信息。它还包含以下示例:

<?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>';
  }
?>

答案 1 :(得分:0)

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

  1. 将图片下载到您的服务器,然后将其再次上传到用户Feed。

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

  3. 使用photo_id查询Graph API时 -
    示例 - https://graph.facebook.com/10151812415573306CocaCola's page上的公开照片),您可以获得有关该图像的一些信息。数据看起来像这样 -

        {
          "id": "10151812415573306", 
          "from": {
            "name": "Coca-Cola", 
            "category": "Food/beverages", 
            "id": "40796308305"
          }, 
          "picture": "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash3/521913_10151812415573306_523748375_s.jpg", 
          "source": "https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash3/521913_10151812415573306_523748375_n.jpg", 
          "height": 332, 
          "width": 500, 
           ...
          "link": "https://www.facebook.com/photo.php?fbid=10151812415573306&set=a.99394368305.88399.40796308305&type=1", 
          "icon": "https://s-static.ak.facebook.com/rsrc.php/v2/yz/r/StEh3RhPvjk.gif", 
          "created_time": "2012-07-09T12:00:41+0000", 
          ...
    

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

    当您在用户Feed /墙上发布该网址时,该帖子将包含图片预览和照片本身链接(在Facebook内)。