#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')]);
}