SuperAPI AI 工具集

socialite-development

安全与审计

查看项目

更新于 10-15 23:48

技能介绍

用途:在 Laravel 中通过 Socialite 管理 OAuth 社交登录,包括接入社交登录提供方、配置 OAuth 重定向/回调流程以及获取用户资料。资料建议用 search-docs 查阅安装、配置、路由、回调、测试、scope 与无状态认证的详细模式。

主要能力:内置提供方包括 facebook、twitter、twitter-oauth-2、linkedin、linkedin-openid、google、github、gitlab、bitbucket、slack、slack-openid、twitch;社区提供方有 150+,可在 socialiteproviders.com 查询,具体配置用 WebFetch 访问 https://socialiteproviders.com/{provider-name}。新版 Twitter/X 项目应使用 twitter-oauth-2(OAuth 2.0),旧 twitter 驱动为 OAuth 1.0;驱动名不随平台更名改变。社区提供方需通过 composer require socialiteproviders/{name} 安装,并通过事件监听注册,而非像内置提供方那样自动发现。

使用方式:在 config/services.php 添加 client_id、client_secret 与 redirect,配置键必须与驱动名完全一致(注意含连字符的 twitter-oauth-2、linkedin-openid、slack-openid)。创建两个路由:redirect() 用于跳转,user() 用于接收回调并获取用户信息;在回调中用 updateOrCreate 依据 id、name、email、token、refreshToken 查找或创建用户,再调用 Auth::login()。可选定制包括 scopes()(合并默认 scope)、setScopes()(完全替换)、with()(传可选参数,如 Google 的 ['hd' => 'example.com'])、asBotUser()(仅 Slack,生成 xoxb- 机器人令牌,须在 redirect() 与 user() 前调用)、stateless()(API/SPA 无 session 场景)。其他能力:enablePKCE()、userFromToken($token)、userFromTokenAndSecret($token, $secret)(OAuth 1.0),用户对象提供 getId()、getName()、getEmail()、getAvatar()、getNickname()、token、refreshToken、expiresIn、approvedScopes。测试可用 Socialite::fake() 伪造重定向与回调。

限制与陷阱:配置键与驱动名不一致会静默失败;缺少 client_id、client_secret 或 redirect 会报错;API/SPA 未用 stateless() 会抛 InvalidStateException;重定向 URL 必须与提供方 OAuth 后台完全一致(含末尾斜杠与协议);不要通过 with() 传 state、response_type、client_id、redirect_uri 或 scope 等保留参数;社区提供方需事件监听注册;user() 在用户拒绝授权时会抛异常,需处理拒绝授权回调。