用途:管理 Laravel Socialite 的 OAuth 社交认证开发,适用于新增社交登录提供方、配置 OAuth 重定向与回调流程、以及获取用户信息并登录。
主要能力:内置提供方包括 facebook、twitter、twitter-oauth-2、linkedin、linkedin-openid、google、github、gitlab、bitbucket、slack、slack-openid、twitch;社区提供方有 150+,见 socialiteproviders.com。支持 scopes() 合并作用域、setScopes() 替换全部作用域、with() 传可选参数、Slack 的 asBotUser()、API/SPA 场景的 stateless(),以及 enablePKCE()、userFromToken($token)、userFromTokenAndSecret($token, $secret) 等。用户对象可读取 getId()、getName()、getEmail()、getAvatar()、getNickname()、token、refreshToken、expiresIn、approvedScopes。测试可用 Socialite::fake()。
使用方式:在 config/services.php 添加提供方配置,配置键必须与驱动名完全一致,含连字符的 twitter-oauth-2、linkedin-openid、slack-openid 需保留连字符;配置 client_id、client_secret、redirect。创建两个路由,一个调用 Socialite::driver('provider')->redirect(),另一个调用 ->user() 接收回调。回调中用 updateOrCreate 按 id、name、email、token、refreshToken 查找或创建用户,再调用 Auth::login()。社区提供方需 composer require socialiteproviders/{name},并通过 SocialiteWasCalled 事件监听器注册,不会自动发现。
限制与常见问题:配置键与驱动名不匹配会静默失败;缺少 client_id、client_secret 或 redirect 任一都会报错;回调地址须与提供方 OAuth 后台完全一致(含协议与结尾斜杠);API/SPA 未用 stateless() 会抛 InvalidStateException;with() 不可传 state、response_type、client_id、redirect_uri、scope;用户拒绝授权时 user() 会抛异常,需处理拒绝授权;Twitter/X 新项目建议用 twitter-oauth-2,旧 twitter 驱动为 OAuth 1.0。
更多细节与完整代码示例需通过 search-docs 查询。