Аватарка Laravel socialite facebook

#php #facebook #laravel #facebook-graph-api #laravel-socialite

#php #Facebook #laravel #facebook-graph-api #laravel-светская львица

Вопрос:

Я использую Laravel 5.2 с Socialite. Я могу извлечь данные пользователя, но проблема в том, что аватар не отображается должным образом, если я добавляю его на его src .

Socialite возвращает объект, в котором я мог бы использовать его как $facebookDetails->getAvatar() , в котором возвращает значение, подобное этому https://graph.facebook.com/v2.6/123456789/picture?type=normal

Если бы я повторил это значение на изображении src , это выглядело бы так.

<img src="https://graph.facebook.com/v2.6/123456789/picture?type=normal" />

Кажется, что это не фактический URL изображения, поскольку, когда я ввожу это в браузере, он перенаправляет меня на «фактическое» изображение и отображает изображение.

Как я мог бы отобразить изображение в img теге, чтобы отобразить фактическое изображение?

Ответ №1:

Просто извлеките данные с помощью file_get_contents функции и обработайте полученные данные.

В контроллере

 use File; 

$fileContents = file_get_contents($user->getAvatar());
File::put(public_path() . '/uploads/profile/' . $user->getId() . ".jpg", $fileContents);

//To show picture 
$picture = public_path('uploads/profile/' . $user->getId() . ".jpg");
  

Комментарии:

1. кроме того, это прекрасно работает в Laravel 5.8. В моем случае у меня возникли проблемы с правильным названием загруженного файла. Итак, я сначала сохранил нового пользователя, прежде чем получить идентификатор для формирования имени (.jpg). Для показа я использовал: $userId = Auth::user()-> id; $picProfile = ‘../uploads/profile/’ . $userId . «.jpg»;

Ответ №2:

я использую следующий код:

 /**
 * In order to save the user's avatar
 * REMEMBER TO ADD "use File; use IlluminateSupportCarbon; use DB;" TO TOP! 
 * @param  $avatar Socialite user's avatar ($user->getAvatar())
 * @param $userId User's id database
 */
public function saveImageAvatar($avatar, $userId)
{
    $fileContents = file_get_contents($avatar);
    $path = public_path() . '/users/images/' . $userId . "_avatar.jpg";
    File::put($path, $fileContents);
    DB::table('Images')->insert(
        ['path' => $path,
        'nome' => 'avatar',
        'users_id' =>  $userId,
        'created_at' => Carbon::now()->format('Y-m-d H:i:s'),
        'updated_at' => Carbon::now()->format('Y-m-d H:i:s')]);
}