Загрузить изображение на фан-страницу Facebook с помощью API - PullRequest
9 голосов
/ 23 сентября 2010

Я пытаюсь загрузить изображение через мое приложение с Facebook Graph API в альбом моей фан-страницы.Хотя я предоставляю идентификатор альбома в качестве параметра для загрузки изображения, оно загружается в альбом с именем 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 ]

12 голосов
/ 20 декабря 2011

Вот скрипт для загрузки фотографий на вашу фан-страницу 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>

Вы можете посмотреть полное руководство здесь .

9 голосов
/ 23 сентября 2010

Не знаю, поможет ли это, но, возможно, вам нужно запросить manage_pages расширенное разрешение, а затем использовать возвращенную страницу access_token для публикации изображений.Вы можете кратко прочитать об этом процессе здесь .

Затем вы можете попробовать эти ссылки с токеном доступа к странице для публикации фотографий:

/me/photos
/<page_id>/photos
/<album_id>/photos
4 голосов
/ 19 мая 2012

Моим лучшим предположением будет одна из двух возможностей:

  • , что ваше приложение не имеет разрешения для загрузки в этот альбом.Если вы запрашиваете / me / альбомы с помощью токена доступа к страницам, он перечислит альбомы, связанные с этой страницей.Поле can_upload для каждого альбома имеет значение true или false (специфично для используемого вами токена доступа).

    или

  • Вы используете токен доступа, связанный с вашей личной учетной записью, а не страницу, к которой принадлежит альбом.Вот некоторая информация о том, как аутентифицироваться как страница, а не как пользователь, которому принадлежит страница: http://developers.facebook.com/docs/authentication/pages/

1 голос
/ 15 января 2015

У меня была та же трудная проблема, что когда я пытаюсь поделиться фотографией на странице, я публикую ее как пользователя, а не как страницу. И когда я пытаюсь опубликовать ее в альбоме, фотография размещена в моем профиле. Но благодаря thefreeman я решил проблему Как сказал свободный человек, Сначала вы должны получить разрешение manage_pages затем получите токен доступа к странице, как указано здесь затем используйте этот токен вместо токена доступа пользователя в вашем приложении или на веб-сайте в конце концов, чтобы разместить фотографии на странице стены "я / фотографии" или чтобы разместить его в определенном альбоме на странице, используйте "{идентификатор альбома} / photos"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...