Facebook: разместите изображение и описание на стене и в альбоме страницы через php - PullRequest
2 голосов
/ 22 февраля 2012

Я хочу, чтобы пользователи разместили изображение на странице в Facebook через форму на веб-сайте. Когда они вошли в систему через Facebook на этом сайте, они могут выбрать изображение со своего компьютера.

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

Я создал приложение для этого, но мы не можем найти способ разместить приложение на этой странице в Facebook.

Нужно ли устанавливать какие-либо разрешения на этой странице или в приложении?

1 Ответ

5 голосов
/ 22 февраля 2012

Чтобы загрузить изображения на страницу 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 );
...