Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)

admin 百科 17
Laravel Socialite 实现第三方登录需配置驱动、处理重定向与回调;GitHub 开箱即用,微信需手动适配授权URL、token换取及用户信息获取流程。

Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)-第1张图片-佛山资讯网

使用 Laravel Socialite 实现第三方登录,核心是配置驱动、处理重定向和回调逻辑。微信和 GitHub 都支持 OAuth2,但细节有差异——GitHub 官方支持开箱即用,微信(尤其是国内微信网页授权)需额外处理域名、scope 和 token 换取方式。

1. 安装与基础配置

Socialite 是 Laravel 官方维护的 OAuth 库,先安装并发布配置:

  • 运行 composer require laravel/socialite
  • config/app.phpproviders 数组中添加:
    Laravel\Socialite\SocialiteServiceProvider::class
  • aliases 中添加:
    'Socialite' => Laravel\Socialite\Facades\Socialite::class
  • 执行 php artisan vendor:publish --provider="Laravel\Socialite\SocialiteServiceProvider" 生成 config/services.php

然后在 config/services.php 中填写凭证:

'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect' => 'https://yoursite.com/login/github/callback',
],
'wechat' => [
    'client_id' => env('WECHAT_APPID'),
    'client_secret' => env('WECHAT_SECRET'),
    'redirect' => 'https://yoursite.com/login/wechat/callback',
    'base_uri' => 'https://api.weixin.qq.com/', // 微信 API 根地址(可选,用于自定义)
],

登录后复制

注意:微信不被 Socialite 原生支持,需手动扩展或使用社区适配器(如 overtrue/laravel-socialite-wechat),下文以“手动兼容方式”说明关键点。

2. 路由与登录入口

定义两个路由:跳转授权页 + 接收回调。推荐统一前缀便于管理:

Route::prefix('login')->group(function () {
    Route::get('/github', [SocialLoginController::class, 'redirectToGithub']);
    Route::get('/github/callback', [SocialLoginController::class, 'handleGithubCallback']);

    Route::get('/wechat', [SocialLoginController::class, 'redirectToWechat']);
    Route::get('/wechat/callback', [SocialLoginController::class, 'handleWechatCallback']);
});

登录后复制

在控制器中,redirectToXxx() 方法调用 Socialite::driver('xxx')->redirect() 即可发起授权请求。

⚠️ 微信特殊点:
– 网页授权需提前在公众号后台配置「授权回调域名」(不能带 http/https 和端口);
– 推荐使用 snsapi_userinfo scope 获取用户信息(需用户同意),snsapi_base 只能拿 openid(静默授权)。

标签: php laravel js git json composer github cad 微信 app access 端口

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~