Я использую Laravel 5.0 с библиотекой социтов. Все работает отлично, но я немного разочарован размером с аватаром. Можно ли получить более крупный аватар?Laravel Socialite - Аватар должен замедлить
ответ
Глядя на исходный код Socialite https://github.com/laravel/socialite/blob/2.0/src/Two/FacebookProvider.php
Вы можете увидеть в строке 91, что URL для аватара добавляет статический ?type=normal
в конце. График API документация Facebook говорит, что вы можете запросить размер аватара с помощью ENUM
или пользовательские width/height
, так что вы можете изменить строку 91 и добавьте к ENUM
или пользовательские width/height
как ?type=large
Более подробную информацию можно найти в документации по графике API Facebook.
Однако, это только для драйвера Facebook, поэтому вам придется копать аналогичным образом для других поставщиков. Если их API не допускают такой свободы, как в случае с Facebook, вам нужно будет сделать с возвращенным аватаром.
Обновлено 12 марта 2015
Не настроить исходный пакет Socialite, раскошелиться хранилище, а затем внести изменения. Затем вы можете подключить ваш разветвленный репозиторий в свой проект, а также отправить запрос на перенос оригинальному автору в случае, если он считает, что он имеет функциональность, которую вы реализовали. Кроме того, ваш разветвленный репозиторий не будет обновляться/поддерживаться, как в случае с исходным пакетом. Если вы решите обновиться до нового пакета, ваши изменения будут потеряны.
Просто добавьте ваш нужный размер после того, как тип = нормальный, как это:
graph.facebook.com/v2.2/{user}/picture?type=normal & ширина = 76 & высота = 76
это будет переопределить тип = нормальный
Для использования оригинального размера аватаров от Facebook и Google:
public function handleProviderCallback($provider){
$userData = Socialite::driver($provider)->user();
$user = new User;
...
Google:
$user->avatar = preg_replace('/\?sz=[\d]*$/', '', $userData->avatar);
Facebook:
$user->avatar = $userData->avatar_original;
Fix для малого Аватар Facebook/Google/Twitter Фото
Я создал этот вспомогательный метод в моем AuthController
public function getBigAvatar($user, $provider)
{
return ($provider == "google") ? $user->getAvatar()."0" : $user->avatar_original;
}
И ЭТО КАК Я СА LL IT:
$user = Socialite::driver($provider)->user();
$userPhoto = $this->getBigAvatar($user, $provider);
Так просто в случае его Google, ну просто добавьте 0 до конца URL и хорошо получить 500px аватар.И щебет и Facebook, Провайдеры уже предлагает avatar_original атрибут, как показано в
FacebookProvider.php
protected function mapUserToObject(array $user)
{
$avatarUrl = $this->graphUrl.'/'.$this->version.'/'.$user['id'].'/picture';
return (new User)->setRaw($user)->map([
'id' => $user['id'], 'nickname' => null, 'name' => isset($user['name']) ? $user['name'] : null,
'email' => isset($user['email']) ? $user['email'] : null, 'avatar' => $avatarUrl.'?type=normal',
'avatar_original' => $avatarUrl.'?width=1920',
]);
}
TwitterProvider.php
return $instance->map([
'id' => $user->uid, 'nickname' => $user->nickname,
'name' => $user->name, 'email' => $user->email, 'avatar' => $user->imageUrl,
'avatar_original' => str_replace('_normal', '', $user->imageUrl),
]);
Поскольку Google не отображает этот , И получает изображение по умолчанию 50px, мы просто меняем его на 500 пикселей с отлично подходит для аватара.
РАБОТАЕМ СОВЕРШЕННО ДЛЯ МЕНЯ, ПОЗВОЛЯЙТЕ МНЕ ЗНАТЬ, ЕСЛИ ЭТО ПОМОГАЕТ ВАМ!
Вот код, который я придумал
if($file = $user->getAvatar()) {
if ($provider == 'google') {
$file = str_replace('?sz=50', '', $file);
} elseif ($provider == 'twitter') {
$file = str_replace('_normal', '', $file);
} elseif ($provider == 'facebook') {
$file = str_replace('type=normal', 'type=large', $file);
}
}
Happy кодирования всех :)
Это в основном только замена или часть аватара URL изображения так, что бы вернуть большую.
getAvatar() функция возвращает URL изображения, так что я сохранил его в переменных $ файла
И в зависимости от структуры URL провайдера отличается, поэтому для каждого поставщика вам необходимо изменить URL-строку изображения соответственно
Google удалить? зг = 50 'из URL изображения строки
Twitter удалить «_nor тип ТЗА»из URL-адреса строки изображения
Facebook заменить„= нормальный“с„типа = большой“в URL изображения строки
Пожалуйста, объясните код, не просто покажите его.Это поднимет значение ответа –
извините, здесь вы – spwin
здесь еще один простой способ для аватара
public function redirectToProvider($provider)
{
return Socialite::driver($provider)->redirect();
}
public function handleProviderCallback($provider)
{
$user = Socialite::driver($provider)->user();
// dd($user);
if ($user) {
$authUser = $this->findOrCreateUser($user, $provider);
Auth::login($authUser, true);
return redirect()->route('home');
}
return 'something went wrong';
}
private function findOrCreateUser($user, $provider)
{
$found = User::where('provider_id', $user->id)->first();
if ($found) {
return $found;
}
// so the default is G+, change according to your needs
$avatar = str_replace('?sz=50', '', $user->avatar);
if ($provider == 'facebook' || $provider == 'twitter') {
$avatar = $user->avatar_original;
}
return User::create([
'username' => $user->name,
'email' => $user->email,
'avatar' => $avatar,
'provider' => $provider,
'provider_id' => $user->id,
]);
}
это way u не меняет код ур много и проще для обслуживания,
однако по какой-то причине авария facebook не появляется в моем приложении, plz, если кто-то может помочь, я бы очень признателен ,
вот моя текущая ссылка фба аватара я получить
https://graph.facebook.com/v2.6/xxxxxxxxxxx/picture?width=1920
и вид
<img class="user-avatar" src="{{ $user->avatar }}" alt="user avatar">
- 1. Laravel socialite facebook avatar
- 2. Laravel Socialite HTTPS twitter avatar
- 3. Laravel/Socialite: Class Laravel \ Socialite \ Contracts \ Factory не существует
- 4. Динамические конфигурации Laravel Socialite
- 5. Laravel Socialite: InvalidStateException
- 6. Laravel socialite popup
- 7. Как проверить Laravel Socialite
- 8. Laravel 5 и Socialite
- 9. Laravel Socialite extend fields
- 10. Laravel Socialite Запомнить меня
- 11. Laravel Socialite не возвращает данные пользователя
- 12. Laravel socialite $ user-> getId()?
- 13. Laravel Socialite Запрос на возврат
- 14. Использование Laravel socialite с CLI
- 15. Laravel 5 Socialite Duplicate entry
- 16. Laravel Socialite инициирует учетные записи
- 17. Множественная аутентификация Laravel - Socialite Plugin
- 18. Laravel JWT и плагин socialite
- 19. Laravel 5.1 and Socialite Вопросы
- 20. Использование Laravel Socialite с API?
- 21. Laravel - Class 'Socialite' не найдено
- 22. Laravel 5.0 Socialite with Wunderlist
- 23. Невозможно использовать Laravel/Socialite с Lumen
- 24. Аутентификация аутентификации Laravel из Laravel \ Socialite \ Two \ User given Ошибка
- 25. Как сохранить обрезанный аватар с laravel
- 26. Laravel Socialite с Facebook не регистрирующийся
- 27. Laravel Socialite - Driver [youtube] не поддерживается
- 28. laravel socialite error, когда пользователь отменяет
- 29. Laravel 5,1 - Facebook Аутентификация через Socialite
- 30. Laravel Socialite InvalidStateException в строке AbstractProvider.php 200
Хотя ваш ответ правильный (и в этом случае только решение), следует иметь в виду, что обычно плохо менять пакеты напрямую, потому что любое обновление пакета перезапишут ваши изменения. – Bogdan
@Bogdan Спасибо, что указали это, я обновил свой ответ. –