Как установить изображение профиля в Facebook с помощью графика API
Есть ли способ изменить изображение профиля пользователя с помощью графика API?
Я знаю, что вы не можете с остальными API ( ссылка), но я не мог найти ничего в новом графике API.
3 ответа
Загрузите изображение в существующий альбом (или создайте новый), используя Graph API. Будет выглядеть примерно так:
$args = array('message' => 'Caption');
$args['image'] = '@' . realpath("the_image.png");
try {
$data = $facebook->api('/'.$album_uid.'/photos', 'post', $args);
}
catch(Exception $e) {
print "<pre>";
print_r($e);
print "</pre>";
}
Затем получите загруженное изображение через Graph API и перенаправьте на ссылку изображения, добавьте &makeprofile=1
к строке запроса. Теперь пользователь будет перенаправлен на страницу обрезки изображения профиля:
try {
$pictue = $facebook->api('/'.$data['id']);
header("Location: ".$pictue['link']."&makeprofile=1");
}
catch(Exception $e) {
print "<pre>";
print_r($e);
print "</pre>";
}
Приложение PicBadges делает эту работу четко. Просто взгляните на их приложение. Довольно ясно, как они реализовали.
Они не загружают картинки напрямую в альбом "Картинки профиля". Вместо этого они загружают как обычно в свой автоматически сгенерированный альбом (по названию своего приложения), а затем выбирают изображение как "изображение профиля". Однако этот метод включает перенаправление пользователей на страницу, где им нужно обрезать ее, прежде чем закончить.
Интересная реализация к сведению!
Вы можете загрузить его в альбом профилей пользователя, используя Graph API, но, похоже, вы не можете обновить значение /me/picture, чтобы установить текущее изображение профиля пользователя для загруженного вами изображения.
Изображение пользователя: Graph API версии v6.0
Чтение
Вы можете получить изображение с конечной точки /{user-id}/picture
Создание
Вы не можете выполнить эту операцию на этой конечной точке.
Обновление
Вы не можете выполнить эту операцию на этой конечной точке.
Удаление
Вы не можете выполнить эту операцию на этой конечной точке.
У меня тоже была эта пробема. Мне удалось загрузить изображение профиля с помощью этой конечной точки.
Эта ссылка предоставляет информацию о том, как загрузить изображение профиля.
private async uploadProfilePhoto(pageId:string, accessToken: string, photoUrl: string){
let url = FACEBOOK_API_URL + `${pageId}/picture`+
`?access_token=${accessToken}`+
`&picture=${photoUrl}`;
let response = null;
try {
response = await axios({
method: 'post',
url: url,
});
} catch (err) {
/** Here this error occures but the profile image is still uploaded.
* {message: 'Unsupported post request.', type: 'GraphMethodException', code: 100, fbtrace_id: 'AGhsadasdaiqyf_YHJaztdasdadG7'
*/
}
return response;
}
Затем, чтобы получить идентификатор изображения профиля, если он вам нужен, вы можете выполнить запрос на получение на этой конечной точке.
const FACEBOOK_API_URL ='https://graph.facebook.com/v7.0/'
let url = FACEBOOK_API_URL + `${pageId}/photos`+
`?access_token=${accessToken}` +
`&fields=picture`;