Laravel Socialite获取有关用户的更多信息 - user_location

时间:2016-10-14 06:11:38

标签: facebook laravel laravel-socialite

我想要用户登录时的其他字段,如 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 个答案:

答案 0 :(得分:2)

您可以在重定向方法中使用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);
}

请注意,字段()将覆盖默认值,因此在上面的示例中,您无法获得"已验证"和"链接"用户的属性。