使用API​​将图像上传到Facebook粉丝页面

时间:2010-09-23 12:38:23

标签: php facebook facebook-graph-api

我正在尝试使用Facebook Graph API通过我的应用程序将图像上传到我的粉丝页面的相册。虽然我提供了albumID作为上传图片的参数,但它会在我自己的个人资料中上传到名为APPLICATION_NAME的相册中。粉丝专辑的专辑保持空白。我也尝试发送粉丝页面的pageID而不是albumID,但结果是一样的。我用于上传的代码是:

$fb_pfoto = $facebook->api('/' . $albumID . '/photos','POST', array(
       'access_token' => $session['access_token'],
       'message'      => 'Caption',
       'source'       => '@' . realpath( '/path/to/image.jpg' )
    ));

请告诉我如何将图片上传到粉丝页面而不是我自己的个人资料相册。

4 个答案:

答案 0 :(得分:12)

以下是在Facebook粉丝页面上传照片的脚本:

<html>
<head>
<title>WebSpeaks.in | Upload images to Facebook</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
require_once 'library/facebook.php';
$facebook = new Facebook(array(
 'appId'  => $app_id,,
 'secret' => $app_secret,
 'fileUpload' => true
));


//It can be found at https://developers.facebook.com/tools/access_token/
$access_token = '<Your access token>';

$params = array('access_token' => $access_token);

//The id of the fanpage
$fanpage = '330299184793';

//The id of the album
$album_id ='10150418901414794';

//Replace arvind07 with your Facebook ID
$accounts = $facebook->api('/arvind07/accounts', 'GET', $params);

foreach($accounts['data'] as $account) {
 if( $account['id'] == $fanpage || $account['name'] == $fanpage ){
  $fanpage_token = $account['access_token'];
 }
}


$valid_files = array('image/jpeg', 'image/png', 'image/gif');

if(isset($_FILES) && !empty($_FILES)){
 if( !in_array($_FILES['pic']['type'], $valid_files ) ){
  echo 'Only jpg, png and gif image types are supported!';
 }else{
  #Upload photo here
  $img = realpath($_FILES["pic"]["tmp_name"]);

  $args = array(
   'message' => 'This photo was uploaded via WebSpeaks.in',
   'image' => '@' . $img,
   'aid' => $album_id,
   'no_story' => 1,
   'access_token' => $fanpage_token
  );

  $photo = $facebook->api($album_id . '/photos', 'post', $args);
  if( is_array( $photo ) && !empty( $photo['id'] ) ){
   echo '<p><a target="_blank" href="http://www.facebook.com/photo.php?fbid='.$photo['id'].'">Click here to watch this photo on Facebook.</a></p>';
  }
 }
}

?>
 <!-- Form for uploading the photo -->
 <div class="main">
  <p>Select a photo to upload on Facebook Fan Page</p>
  <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
  <p>Select the image: <input type="file" name="pic" /></p>
  <p><input class="post_but" type="submit" value="Upload to my album" /></p>
  </form>
 </div>
</body>
</html>

您可以观看complete tutorial here

答案 1 :(得分:9)

不知道这是否会有所帮助,但您可能需要manage_pages扩展权限,然后使用返回页面access_token发布图片。您可以简要阅读有关此流程的here

然后,您可以使用页面访问令牌尝试这些链接来发布照片:

/me/photos
/<page_id>/photos
/<album_id>/photos

答案 2 :(得分:4)

我最好的猜测是两种可能性之一:

  • 您的应用无权上传到该相册。如果您使用页面访问令牌请求/ me / albums,它将列出与该页面关联的相册。这是每个专辑的can_upload字段,可以是true或false(特定于您正在使用的访问令牌)。

  • 您使用的是与您的个人帐户相关联的访问令牌,而不是该相册所属的页面。以下是有关如何作为页面进行身份验证的信息,而不是拥有该页面的用户:http://developers.facebook.com/docs/authentication/pages/

答案 3 :(得分:1)

我遇到了同样的难题,当我尝试将照片分享到某个页面时,我将其作为用户而不是作为页面发布。当我尝试将其发布在相册中时,我的个人资料中发布了该照片。 但是感谢thefreeman我解决了这个问题 正如自由人所说, 您必须先获得manage_pages权限 然后按照here 获取网页访问令牌 然后在您的应用或网站中使用此令牌而不是用户访问令牌 最后,将照片张贴在页面墙上&#34; me / photos&#34; 或者将其发布到页面中的特定相册中使用&#34; {album-id} / photos&#34;