使用 Github 等第三方帐号登录 Laravel 应用
Laravel 的 Socialite 使得使用 Facebook、Twitter、Google、LinkedIn、GitHub 以及 Bitbucket 等第三方帐号登录 Larave 应用变得很容易实现。你可以把它们与已存在的用户进行第三方连接,也可以作为主登录机制。虽然 官方文档 中给出了一些步骤,但是很多朋友看完后依然不知道具体如何实现登录功能。今天我们以 Github 为例,详细列出其实现方法。
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

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

In PHP, password_hash and password_verify functions should be used to implement secure password hashing, and MD5 or SHA1 should not be used. 1) password_hash generates a hash containing salt values to enhance security. 2) Password_verify verify password and ensure security by comparing hash values. 3) MD5 and SHA1 are vulnerable and lack salt values, and are not suitable for modern password security.

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP type prompts to improve code quality and readability. 1) Scalar type tips: Since PHP7.0, basic data types are allowed to be specified in function parameters, such as int, float, etc. 2) Return type prompt: Ensure the consistency of the function return value type. 3) Union type prompt: Since PHP8.0, multiple types are allowed to be specified in function parameters or return values. 4) Nullable type prompt: Allows to include null values and handle functions that may return null values.

PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.
