seoperin
@seoperin
Full stack web developer. Laravel / Vue

Почему данные юзера на английском языке, socialite + vk + laravel?

Сделал на сайте способ регистрации через Вконтакте, использовал socialite + vk provider + laravel. После регистрации возвращаются данные о юзере, но данные на английском языке, хотя на сайте на русском. Проверил на трёх аккаунтах, из разных локаций России, всё равно возвращаются данные на английском.
Как это можно исправить? У вендора идёт такой запрос:
protected function getUserByToken($token)
    {
        $response = $this->getHttpClient()->get(
            'https://api.vk.com/method/users.get?user_ids='.$token['user_id'].'&fields=uid,first_name,last_name,screen_name,photo'
        );
.......

У vk api есть возможность задать язык с помощью параметра lang=ru, но в коде вендора это писать неправильно. Собственно вопрос, почему данные приходят на английском и как это поменять, не меняя код вендора? Где можно переопределить данный метод?
  • Вопрос задан
  • 950 просмотров
Решения вопроса 1
seoperin
@seoperin Автор вопроса
Full stack web developer. Laravel / Vue
Подумал о таком варианте. Когда socialite получает данные юзера, не записывать их, а делать еще одно обращение к vk api по айдишнику юзера, и вытаскивать всю нужную инфу уже на русском, передавая параметр lang=ru, получится на один запрос к api больше, но зато результат нужный. Повторное обращение будет только при регистрации а не при каждом входе на сайт, поэтому думаю ничего страшного от этого не будет. Пока сделаю так, но наверно проблема в расположении сервера.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
DJZT
@DJZT
Laravel - code for you
Попробуй установи переменную языка приложения в config/app.php в ru
Ответ написан
@vadym26
Установите в env файле переменную VKONTAKTE_LANG с значеним ru.
VKONTAKTE_LANG=ru
Ответ написан
Комментировать
@dimitr0s
/config/services.php

Там, где у Вас настройки для VK добавьте еще 'lang'=>'ru', должно получиться что-то вроде:

'vkontakte' => [
'client_id' => env('VKONTAKTE_CLIENT_ID'),
'client_secret' => env('VKONTAKTE_CLIENT_SECRET'),
'redirect' => env('VKONTAKTE_REDIRECT_URI') ,
'lang' => 'ru'
],
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы