2016-10-14 3 views
1

Я хочу другие поля от пользователей facebook, когда они войти в систему как USER_LOCATIONLaravel Светская получить более подробную информацию о пользователе - 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: "[email protected]" 
    +avatar: "xxxxxx" 
    +user: array:5 [▶] 
    +"avatar_original": "xxxxxxxx" 
} 

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

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

ответ

0

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

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); 
} 

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