第三方登陆认证

最后更新于:2022-04-01 15:05:53

除了传统的以表单进行的认证,Laravel 还提供了简单、易用的方式,使用 Laravel Socialite 进行 OAuth 认证。Socialite 目前支持的认证有 Facebook、 Twitter、Google、以及GitHub 和 Bitbucket 。 如果要开始使用第三方认证,请将下面的代码加入到你的 composer.json 文件內: `"laravel/socialite": "~2.0"` 接下來,在你的 config/app.php 配置文件中注册 Laravel\Socialite\SocialiteServiceProvider。也可以注册 facade: `'Socialize' => 'Laravel\Socialite\Facades\Socialite',` 你需要在应用程序中加入 OAuth 服务所需的凭证。这些凭证都放在 config/services.php 配置文件里,并根据应用的需求使用 facebook、twitter、google 或 github 作为对应的键值。例如: ~~~ 'github' => [ 'client_id' => 'your-github-app-id', 'client_secret' => 'your-github-app-secret', 'redirect' => 'http://your-callback-url', ], ~~~ 接下來就准备认证用户了!你会需要两个路由:一个用于将用户重定向至认证提供网站,另一个用于认证之后,从认证服务接收回调。下面是一个使用 Socialize facade 的示例: ~~~ public function redirectToProvider() { return Socialize::with('github')->redirect(); } public function handleProviderCallback() { $user = Socialize::with('github')->user(); // $user->token; } ~~~ redirect 方法将用户重定向到认证 OAuth 的网站,而 user 方法会获取返回的请求,以及从认证网站取得的用户信息。在重定向至用户之前,你也可以设定请求的「 scopes 」: `return Socialize::with('github')->scopes(['scope1', 'scope2'])->redirect();` 一旦你取得用户实例,你能获取到更多的用户详细信息: ## 获取用户资料 ~~~ $user = Socialize::with('github')->user(); // OAuth Two Providers $token = $user->token; // OAuth One Providers $token = $user->token; $tokenSecret = $user->tokenSecret; // All Providers $user->getId(); $user->getNickname(); $user->getName(); $user->getEmail(); $user->getAvatar(); ~~~
';