Я пытаюсь загрузить изображение через мое приложение с помощью Facebook Graph API в альбом моей страницы поклонников. Хотя я предоставляю albumID как параметр для загрузки изображения, он загружается в альбом под названием APPLICATION_NAME Photos в моем собственном профиле. Альбом страницы поклонника остается пустым. Я также попытался отправить идентификатор страницы моей страницы поклонника вместо albumID, но результат тот же. Код, который я использую для загрузки:
$fb_pfoto = $facebook->api('/' . $albumID . '/photos','POST', array( 'access_token' => $session['access_token'], 'message' => 'Caption', 'source' => '@' . realpath( '/path/to/image.jpg' ) ));
Пожалуйста, дайте мне идеи, как я могу загрузить изображение на страницу поклонника, а не в свой собственный профиль.
Не знаю, поможет ли это, но, возможно, вам нужно запросить расширенное разрешение manage_pages
а затем использовать возвращенную страницу access_token для публикации изображений. Вы можете кратко прочитать об этом процессе.
Затем вы можете попробовать эти ссылки с токеном доступа к странице для публикации фотографий:
/me/photos /<page_id>/photos /<album_id>/photos
Вот сценарий для загрузки фотографий на вашей Фан-странице 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>
Здесь вы можете посмотреть полный учебник .
Мое лучшее предположение было бы одной из двух возможностей:
что ваше приложение не имеет разрешения на загрузку на этот альбом. Если вы запросите / меня / альбомы, используя токен доступа к страницам, он перечислит альбомы, связанные с этой страницей. Поле can_upload для каждого альбома, которое является либо истинным, либо ложным (специфичным для используемого токена доступа).
или
Вы используете токен доступа, связанный с вашей личной учетной записью, а не страницу, к которой принадлежит альбом. Вот некоторая информация о том, как аутентифицироваться как страница, а не пользователь, которому принадлежит страница: http://developers.facebook.com/docs/authentication/pages/
У меня была такая же сложная проблема, что, когда я пытаюсь поделиться фотографией на странице, я разместил ее как пользователь не как страницу. И когда я пытаюсь опубликовать ее в альбоме, фото, опубликованное в моем профиле. Но благодаря thefreeman я решил проблему. Как сказал thefreeman: сначала вы должны получить разрешение manage_pages, затем получить токен доступа к странице, как упомянуто здесь, а затем использовать этот токен вместо токена доступа пользователя в своем приложении или на веб-сайте окончательно, чтобы опубликовать фотографии на стене страницы «me / photos» или опубликовать его в определенном альбоме на странице, используйте «{album-id} / photos"