使用Github等第三方帐号登录Laravel应用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用Github等第三方帐号登录Laravel应用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4353字,纯文字阅读大概需要7分钟。
内容图文
![使用Github等第三方帐号登录Laravel应用](/upload/InfoBanner/zyjiaocheng/206/8a2a5e087ab24b49a646538a4737f32c.jpg)
1. 安装 Socialite
通过 Composer 命令行安装:
$ composer require laravel/socialite
然后把其注册到 config/app.php 中:
'providers' => [ ... Laravel\Socialite\SocialiteServiceProvider::class, ...],'aliases' => [ ... 'Socialite' => Laravel\Socialite\Facades\Socialite::class, ...],
现在 Socialite 已经注册到你的应用中了,下面我们来设置证书。
2. 创建 Github 应用
首先,你需要拥有一个 Github 帐号,之后到“Setting”–“OAuth applications”–“Developer applications”–“ Register new application ”,创建一个 OAuth 应用:
之后填写应用的信息:
其中的“ Authorization callback URL ”我们这里设置为“http://your-domain-name.com/auth/github/callback”,你需要根据你的应用实际来填写。创建完成之后在应用的详细页面就可以看到“ Client ID ”和“ Client Secret ”的值了。
3. 服务配置
打开 config/services.php 文件,在其中添加 Github 授权信息:
'github' => [ 'client_id' => 'your-github-app-id', 'client_secret' => 'your-github-app-secret', 'redirect' => 'http://your-callback-url',],
把第二步创建应用的“ Client ID ”和“ Client Secret ”以及“ Authorization callback URL ”的值填到上面。当然,你也可以在 .env 文件中定义三个环境变量,然后在 config/services.php 中通过 env() 函数获取。
4. 定义路由
在 routes.php 中添加下面的路由(你可以自定义为任何名称,这里为方便起见直接定义为下面的名称):
Route::get('auth/github', 'Auth\AuthController@redirectToProvider');Route::get('auth/github/callback', 'Auth\AuthController@handleProviderCallback');
下面我们来完成控制器中的这几个方法。
5. 控制器方法
在 Auth\AuthController 中添加下面方法:
public function redirectToProvider() { return Socialite::driver('github')->redirect(); } public function handleProviderCallback() { try { $user = Socialite::driver('github')->user(); } catch (Exception $e) { return Redirect::to('auth/github'); } $authUser = $this->findOrCreateUser($user); Auth::login($authUser, true); return redirect('/'); } private function findOrCreateUser($githubUser) { if ($authUser = User::where('github_id', $githubUser->id)->first()) { return $authUser; } return User::create([ 'name' => $githubUser->name, 'email' => $githubUser->email, 'github_id' => $githubUser->id, 'avatar' => $githubUser->avatar ]); }
上面只是实现的一般方法,当然你也可以按照自己的方法来实现。首先跳转到 Github,获得用户授权后再跳转回来到,然后根据 Github ID 查找用户并登录,或者创建一个新的用户。
6. 数据库设计
我们需要修改 users Migration 以便存储一些 Github 特定的信息。Github 会给我们返回很多信息,我们这里选择其中的一些进行存储。
$table->increments('id'); $table->string('github_id')->unique(); $table->string('name'); $table->string('email'); $table->string('avatar'); $table->rememberToken(); $table->timestamps();
由于我们这里是用于演示的,所以直接更改为了上面的样子,你可以根据你的实际需求来设计。Github 为我们返回的信息大致如下:
7. User Eloquent
修改 User Eloquent Model 以便能够存储 Github 的信息:
protected $fillable = ['name', 'email', 'github_id', 'avatar'];
下面我们来看看上面的这些代码是如何具体运行的。
8. 使用
在需要登录的地方添加下面的链接,其目标地址指向我们上面添加的路由 auth/github 。
当用户点击上面的按钮的时候,会跳转到 Github 授权页面,询问用户是否运行授权,当用户允许之后,会跳转回 auth/github/callback ,也就是我们创建应用时填写的“Authorization callback URL”。
之后就会执行回调函数中的代码,登录已经存在的用户,或者创建一个新的用户并登录。
现在我们已经拥有一个经过 Laravel 授权的用户了,可以直接使用 Auth 提供的所有方法,如 Auth::check() 、 Auth:user() 等。你还可以添加一个 logout 路由来运行 Auth::logout() 方法退出登录。之后的操作就可以同使用 Laravel 自带的认证系统一样了。
以上便完成了使用 Github 帐号登录 Laravel 应用的所有步骤,其他第三方应用的实现基本类似。
参考: laravel.com , mattstauffer.co
内容总结
以上是互联网集市为您收集整理的使用Github等第三方帐号登录Laravel应用全部内容,希望文章能够帮你解决使用Github等第三方帐号登录Laravel应用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。