Laravel使用Socialite实现Github登录
1. 安装Socialite
在 Laravel 项目根目录下,使用 Composer 安装 Socialite。
composer require laravel/socialite
安装成功后,在config/app.php 中配置 Socialite 的 Service Provider 和 Facade:
...
'providers' => [
// Other Service Providers
Laravel\Socialite\SocialiteServiceProvider::class,
],
'aliases' => [
// Other Facades
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
],
...
2. 配置services.php
在config/
目录下,创建services.php
文件,用于配置Github OAuth:
<?php
return [
'github' => [
'client_id' => env('GITHUB_CLIENT_ID'),
'client_secret' => env('GITHUB_CLIENT_SECRET'),
'redirect' => env('GITHUB_CALLBACK_URL'),
],
];
3. 获取Github OAuth应用 Client ID 和 Client Secret
- 打开 https://github.com/settings/developers ,登录账号
- 点击右上角的“New OAuth App”
- 填写应用信息,其中 Authorization callback URL 填写指向 Laravel 应用的路由
- 点击“Register application”,完成后即可看到 Client ID 和 Client Secret。
4. 在env中设置Github OAuth环境变量
打开.env
文件,加入如下环境变量:
GITHUB_CLIENT_ID=你的Client ID
GITHUB_CLIENT_SECRET=你的Client Secret
GITHUB_CALLBACK_URL=http://your-app.com/auth/github/callback
其中,GITHUB_CALLBACK_URL
为 Github OAuth 应用的回调地址,需要自己在 Laravel 应用中定义一个路由。
5. 创建Github OAuth路由及控制器方法
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Socialite;
class GithubController extends Controller
{
/**
* Redirect the user to the GitHub authentication page.
*
* @return \Illuminate\Http\Response
*/
public function redirectToProvider()
{
return Socialite::driver('github')->redirect();
}
/**
* Obtain the user information from GitHub.
*
* @return \Illuminate\Http\Response
*/
public function handleProviderCallback(Request $request)
{
//$user = Socialite::driver('github')->user();
$user = Socialite::driver('github')->stateless()->user();
// 用户信息存储、或者其他操作
return redirect('/home');
}
}
在routes/web.php
文件中,定义 Github OAuth 路由:
Route::get('auth/github', 'Auth\GithubController@redirectToProvider');
Route::get('auth/github/callback', 'Auth\GithubController@handleProviderCallback');
6. 完成Github OAuth登录
现在可以通过以下方式访问 Github OAuth 登录界面:
http://laravel.app/auth/github
在 Github 登录后,会跳转至 Laravel 应用中定义的回调路由,执行handleProviderCallback
方法。在该方法中,可以根据$user
对象获取用户信息并进行相应的操作(如存储信息等)。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Laravel5.4框架使用socialite实现github登录的方法 - Python技术站