Laravel Socialite получить больше информации о пользователе — user_location

#facebook #laravel #laravel-socialite

#Facebook #laravel #laravel-socialite

Вопрос:

Я хочу, чтобы другие поля от пользователей facebook, когда они входят в систему, как user_location

Теперь я узнал, что мне нужно отправить приложение на проверку, чтобы получить одобрение на получение местоположения пользователя. Также Facebook уже одобрил его.

Теперь я пытаюсь выполнить выборку, используя следующий код:

 $this->socialite->driver($provider)->scopes(['user_location', 'user_hometown'])->redirect()
  

но когда я сбрасываю это:

 $this->socialite->driver($provider)->user();
  

Он не предоставляет мне user_location в массиве пользовательских данных. Но facebook запросил разрешение на это, когда я попытался войти в систему в первый раз.

Это данные, которые я получаю:

 User {#330 ▼
   token: "xxxxxxxxxx"
   refreshToken: null
   expiresIn: "xxxxx"
   id: "xxxxxx"
   nickname: null
   name: "xxxxxx"
   email: "xxxxxx@xx.com"
   avatar: "xxxxxx"
   user: array:5 [▶]
   "avatar_original": "xxxxxxxx"
}
  

Итак, могу ли я узнать, что я делаю не так, и как я могу получить местоположение пользователя.

Заранее спасибо, ребята

Ответ №1:

Вы можете использовать метод fields() в своем методе перенаправления, чтобы задать дополнительные поля и использовать их позже в своем приложении.

 public function redirectToFacebook()
{
    return $this->socialite->driver($provider)->fields([
        'first_name', 'last_name', 'email', 'gender','location'
    ])->scopes([
        'user_location'
    ])->redirect();
}
  

Затем позже получите к ним доступ с помощью:

 public function handleFacebookCallback()
{
    $providerUser = $this->socialite->driver($provider)->fields([
        'first_name', 'last_name', 'email', 'gender', 'birthday','location'
    ])->user();

    dd($providerUser);
}
  

Обратите внимание, что fields() перезапишет значения по умолчанию, поэтому в приведенном выше примере вы не получите свойства «проверено» и «ссылка» для пользователя.