Intereting Posts
Хотите разбить строку в mysql, используя SUBSTRING_INDEX PHP-маршрутизация с помощью Codeigniter (заголовки в URL-адресе для SEO) Строки php неизменяемы? Тип жонглирования при проведении свободного сравнения дает нежелательный результат обновить определенную запись из списка массива mysql Улучшает ли HTML5 Javascript игры (более безопасный)? Можно ли сохранить экземпляр класса в пространстве $ _SESSION? время 30 секунд превысило ошибку? файл получить содержимое MongoRegex и поиск нескольких строк в коллекции Codeigniter: вызов функции функции-члена () в нуле $ settings или Config Class для сохранения настроек проекта? Laravel 4: как написать правильный вложенный контроллер для вложенного ресурса? Передача XML в Javascript для отображения маркеров в карте Google Как переопределить функцию запуска по умолчанию лезвия в laravel 5? Модули CI работают на локальном уровне, но 404 не найдены на сервере

API Facebook работает отлично для / фида, но не для / фотографий

Ниже приведен код, который отлично работает, если я передаю /pageid/feed в facebook->api , но когда я его изменил, чтобы загрузить изображение прямо на свой фотоальбом Facebook, он не будет работать. Пожалуйста, дайте мне знать, что я делаю неправильно в следующем коде:

 // Works fine $status = $facebook->api("/194458563914948/feed", 'post', $attachment); // Does not work $status = $facebook->api("/196878530339618/photos", 'post', $attachment); 

Полный источник

  <?php require 'src/facebook.php'; $app_id = "332267477347"; $app_secret = "xxxx"; $facebook = new Facebook(array( 'appId' => $app_id, 'secret' => $app_secret, 'cookie' => true, 'fileUpload' => true, )); $facebook->setFileUploadSupport(true); $user = $facebook->getUser(); //echo $user; if(($facebook->getUser())==0) { header("Location:{$facebook->getLoginUrl(array('scope' => 'photo_upload,user_status,publish_stream,user_photos,manage_pages'))}"); exit; } else { $accounts_list = $facebook->api('/me/accounts'); echo "i am connected"; } $valid_files = array('image/jpeg', 'image/png', 'image/gif'); //to get the page access token to post as a page foreach($accounts_list['data'] as $account){ if($account['id'] == 194458563914948){ // my page id =123456789 $access_token = $account['access_token']; echo "<p>Page -- Access Token: $access_token</p>"; } } //posting to the page wall if (isset($_FILES) && !empty($_FILES)) { $aid = '421539304540205'; $folder = "pak/".$_FILES['pic']['name']; $fold = 'http://snowdrop.com.pk/fb/'.$folder; echo $fold."<br>"; if( move_uploaded_file($_FILES['pic']['tmp_name'], $folder) ) { #Upload photo here $img = realpath($_FILES["pic"]["tmp_name"]); $attachment = array('message' => $_POST['textfield'], 'aid' => $aid, 'source' => '@' . $img, 'access_token' => $access_token, ); $status = $facebook->api("/421539304540205/photos", 'post', $attachment); echo $status; var_dump($status); } else{ echo 'Only jpg, png and gif image types are supported!'; } } ?> <body> <!-- Form for uploading the photo --> <div class="main"> <p>Select a photo to upload on Facebook Fan Page</p> <form method="post" action="" enctype="multipart/form-data"> <p>Select the image: <input type="file" name="pic" /> <br /> <label>Description <input type="text" name="textfield" id="textfield" /> </label> </p> <p><input class="post_but" type="submit" value="Upload to my album" /></p> </form> </div> </body> 

Путь, который вы используете / 406221796071956 / фотографии , неправильный, и поэтому он не работает.

Причина, по которой этот путь ошибочен, заключается в том, что 406221796071956 является идентификатором изображения, см. Сам, API-интерфейс Graph API для 406221796071956 :

"type": "photo"

Если вы хотите опубликовать этот альбом, используйте / 196878530339618 / photos , так как это альбом: Graph API Explorer для 196878530339618

"type": "album"


редактировать

Для добавления фотографий в альбом см. https://developers.facebook.com/docs/reference/api/album/#photos .


2nd Edit

Согласно документации объекта альбома :

can_upload

Определяет, может ли UID загружаться в альбом и возвращает true, если пользователь владеет альбомом, альбом не заполнен, и приложение может добавлять фотографии в альбом

Поэтому вам нужно, чтобы альбом не был заполнен, чтобы быть владельцем альбома и иметь правильные разрешения для загрузки.