facebook загрузить фото

Я новичок в facebook api, и у меня небольшая проблема. Я пытаюсь загрузить изображение в альбом пользователя. Для этого я использую скрипт PHP, который я нашел здесь, при переполнении стека:

$app_id = xxx; $app_secret = "xxx"; $my_url = "http://apps.facebook.com/myapp/test.php"; $code = $_REQUEST["code"]; if(empty($code)) { $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url); echo("<script> top.location.href='" . $dialog_url . "'</script>"); } $token_url = "https://graph.facebook.com/oauth/access_token?client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret=" . $app_secret . "&code=" . $code; $access_token = file_get_contents($token_url); //upload photo $file= 'test.png'; $args = array( 'message' => 'Photo from application', ); $args[basename($file)] = '@' . realpath($file); print_r($args); $ch = curl_init(); $url = 'https://graph.facebook.com/2038278/photos?access_token='.$access_token; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $args); $data = curl_exec($ch); //returns the photo id print_r(json_decode($data,true)); 

Но результат:

Массив ([сообщение] => Фото из приложения [test.png] => @ / [mypath] /test.png) Array ([error] => Array ([type] => OAuthException [message] => Ошибка проверки приложения .))

Что это значит ? Нужно ли иметь расширенные разрешения для моего приложения? я дал ему доступ к основным и user_photos

Большое спасибо!


второй скрипт

$ app_id = "xxx"; $ app_secret = "xxx"; $ my_url = "http://apps.facebook.com/myapp/test.php";

 $code = $_REQUEST["code"]; if(empty($code)) { $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) . "&scope=user_photos" ; echo("<script> top.location.href='" . $dialog_url . "'</script>"); } $token_url = "https://graph.facebook.com/oauth/access_token?client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret=" . $app_secret . "&code=" . $code; $access_token = file_get_contents($token_url); $token = $access_token; //upload photo $file= 'test.png'; $args = array( 'message' => 'Photo from application', ); $args[basename($file)] = '@' . realpath($file); $ch = curl_init(); $url = 'https://graph.facebook.com/me/photos?access_token='.$token; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $args); $data = curl_exec($ch); print_r(json_decode($data,true)); 

Я думаю, вам нужно, чтобы ваше приложение запрашивало разрешение, называемое publish_stream . Существует также другое разрешение, называемое photo_upload , но, как я понимаю, это считается старым (но все еще может работать)

мой дорогой, когда вы загружаете какую-либо фотографию из своего приложения в facebook, Facebook автоматически создает альбом с именем вашего приложения. Тебе не нужно ничего делать. Просто загрузите любую фотографию из своего приложения, а затем перейдите в свой профиль, посмотрите все альбомы, после чего вы увидите, что facebook создал альбом с именем вашего приложения, и ваша загруженная фотография находится в нем.

Я бы не пошел так, если бы был вами. Метод cURL оказался для меня, по крайней мере, слишком сложным. Это шаги, которые необходимо предпринять, ниже вы можете увидеть ссылку на последнее последнее сообщение в блоге об этой точной проблеме:

  1. Получите user_photos пользователя и publish_stream (не обязательно, но хорошо для будущего развития).
  2. Создайте альбом от имени пользователя, который будет содержать фотографию, которую вы хотите загрузить.
  3. Получите идентификатор альбома только что созданного альбома.
  4. Задайте параметры фотографии: сообщение, которое следует за ним, расположение файла на сервере и множество других материалов, которые вы можете найти в этой документации документации о публикации фотографий (внизу страницы) .
  5. Загрузите фотографию с заданными параметрами.

Отличный учебник Dai Pratt по загрузке фотографий через API-интерфейс New Graph

ВАЖНОЕ ПРИМЕЧАНИЕ. В сценарии есть серьезный недостаток: он не проверяет, существует ли альбом уже, если вы хотите загрузить несколько фотографий от имени пользователя. Важно, чтобы вы сохраняли идентификатор пользователя и идентификатор альбома, который вы создали в базе данных, поэтому вы можете запрашивать его каждый раз, когда пользователь хочет загрузить фотографию, и создать или не создать альбом соответственно.

EDIT : И теперь, после того, как я опубликовал, я вижу точную ссылку в комментарии здесь. В любом случае – надеюсь, что это поможет 🙂