Чтобы загрузить изображения на страницу 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%, но я считаю, что используя Graph API, вы можете загружать изображения только в альбомы, созданные с помощью Graph API; то есть вам нужно сначала создать альбом с помощью Graph 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 );