Я хочу, чтобы пользователи размещали изображение на странице facebook через форму на веб-сайте. Когда они вошли в систему через facebook на этом веб-сайте, они могут выбрать изображение со своего компьютера.
Как только они выбрали изображение, я хочу, чтобы он был опубликован на стене пользователей и в альбоме страницы, где я один из администраторов.
Я создал приложение для этого, но мы не можем найти способ получить приложение для публикации на этой странице facebook.
Нужно ли устанавливать какие-либо разрешения на эту страницу или приложение?
Чтобы загрузить изображения на страницу facebook, для которой вы являетесь администратором, вам необходимо сделать следующее:
1.) Создайте приложение facebook (обычным способом), убедитесь, что вы указали URL Canvas
2.) Перейдите к URL-адресу, указанному ниже в качестве администратора страницы, и предоставите разрешения (user_photos, manage_pages, offline_access, publish_stream)
https://www.facebook.com/dialog/oauth? client_id=<application_id> &redirect_uri=<canvas_url> &response_type=token &scope=user_photos,manage_pages,offline_access,publish_stream
3.) Когда вы даете приложению требуемые разрешения, вы будете перенаправлены на canvas_url # access_token = * access_token *, например
http://example.com/#access_token=awe12
4.) Затем перейдите к
https://graph.facebook.com/me/accounts?access_token=<access_token>
(используйте токен доступа из № 3). Это перечислит страницы, которыми вы управляете; запишите access_token для страниц, на которые вы хотите загрузить изображение
Я не уверен на 100%, но я считаю, что с помощью графика api вы можете загружать изображения только в альбомы, созданные с помощью графика api; т.е. вам нужно сначала создать альбом с помощью графика api. Вот пример кода с помощью curl:
$uri = sprintf( 'https://graph.facebook.com/%1$s/albums?access_token=%2$s', $page_id, $access_token ); $post_fields = array( 'name' => trim( $album_name ) ); $curl = curl_init( $uri ); curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt( $curl, CURLOPT_POST, TRUE ); curl_setopt( $curl, CURLOPT_POSTFIELDS, $post_fields ); $raw_data = curl_exec( $curl ); curl_close( $curl ); $data = json_decode( $raw_data, $assoc = TRUE );
В приведенных выше $data
будет указан идентификатор альбома, который вам нужно будет загрузить:
// prepare the curl post fields $batch = sprintf( '[{"method":"POST", "relative_url":"%1$s/photos", "attached_files":"file1"}]', $album_id ); $post_fields = array( 'batch' => $batch, 'access_token' => $access_token, 'file1' => '@' . $image_abs_path ); $uri = 'https://graph.facebook.com'; $curl = curl_init( $uri ); curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt( $curl, CURLOPT_POST, TRUE ); curl_setopt( $curl, CURLOPT_POSTFIELDS, $post_fields ); $raw_data = curl_exec( $curl ); curl_close( $curl ); $data = json_decode( $raw_data, $assoc = TRUE );