Ниже приведен код, который отлично работает, если я передаю /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 .
Согласно документации объекта альбома :
can_upload
Определяет, может ли UID загружаться в альбом и возвращает true, если пользователь владеет альбомом, альбом не заполнен, и приложение может добавлять фотографии в альбом
Поэтому вам нужно, чтобы альбом не был заполнен, чтобы быть владельцем альбома и иметь правильные разрешения для загрузки.