facebook загрузить фото - PullRequest
       2

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

1 голос
/ 31 января 2011

Я новичок в API Facebook, и у меня есть небольшая проблема.Я пытаюсь загрузить изображение в альбом пользователя.Для этого я использую скрипт 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));

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

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

Что это значит?Нужно ли иметь расширенные разрешения для моего приложения?я дал ему доступ к basic и 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));

Ответы [ 3 ]

1 голос
/ 31 января 2011

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

1 голос
/ 31 января 2011

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

0 голосов
/ 31 января 2011

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

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

Дай Пратта превосходное руководство по загрузке фотографий через Новый График API

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

РЕДАКТИРОВАТЬ : И теперь, после того, как я написал, я вижу точную ссылку в комментарии здесь. Во всяком случае, надеюсь, это поможет:)

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