Я новичок в 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 оказался для меня, по крайней мере, слишком сложным. Это шаги, которые необходимо предпринять, ниже вы можете увидеть ссылку на последнее последнее сообщение в блоге об этой точной проблеме:
user_photos
пользователя и publish_stream
(не обязательно, но хорошо для будущего развития). Отличный учебник Dai Pratt по загрузке фотографий через API-интерфейс New Graph
ВАЖНОЕ ПРИМЕЧАНИЕ. В сценарии есть серьезный недостаток: он не проверяет, существует ли альбом уже, если вы хотите загрузить несколько фотографий от имени пользователя. Важно, чтобы вы сохраняли идентификатор пользователя и идентификатор альбома, который вы создали в базе данных, поэтому вы можете запрашивать его каждый раз, когда пользователь хочет загрузить фотографию, и создать или не создать альбом соответственно.
EDIT : И теперь, после того, как я опубликовал, я вижу точную ссылку в комментарии здесь. В любом случае – надеюсь, что это поможет 🙂