Facebook: разместить изображение и описание на стене и в альбоме страницы через php

Я хочу, чтобы пользователи размещали изображение на странице 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 );