用途:Social Login 模式用于通过第三方身份提供商(如 Google、Apple、GitHub、Facebook)完成用户认证,用户授权后应用经 OAuth 2.0 或 OpenID Connect 获取其资料,从而把多字段注册表单变成单击操作,并拿到已验证邮箱与基础资料。
适用场景:注册速度重要的消费级 Web 应用;天然适合 GitHub 登录的开发者工具;遵循平台惯例的移动应用(Google 或 Apple 登录);降低结账摩擦的电商;社交身份增强可信度的社区平台。
应避免:企业或 B2B 应用(通常用 SAML 企业 SSO);医疗、金融等强监管行业(依赖提供商有风险);需要超出提供商能力的身份验证;OAuth 重定向不便的离线优先应用;用户对第三方数据共享有强烈隐私顾虑时。
实现流程:先确认模式匹配问题与约束,再从 references/pattern.md 的解剖与示例出发选择最小可行变体,先应用无障碍、性能与交互护栏,再做视觉打磨,最后按测试指引验证键盘、屏幕阅读器、响应式与失败场景。
无障碍要点:社交按钮需可聚焦并可用 Enter/Space 激活;按钮文本包含提供商名称而非仅图标;重定向期间用 aria-busy="true" 显示加载状态;OAuth 失败(弹窗被拦截、提供商错误)时播报错误。不要使用无文本的纯图标按钮,不要用可能被浏览器拦截的弹窗,不要仅靠颜色区分提供商按钮。
性能目标:按钮渲染 < 50ms;点击到导航开始 < 100ms;服务端令牌交换 < 500ms;总流程 < 10 秒。基础 OAuth 可不依赖 SDK,直接重定向:window.location.href = ${authUrl}?${params};
常见错误:请求过多权限(应只请求 email、profile、openid 等最小范围,按需增量申请);缺少账号关联(同一邮箱重复建号,应检查并提示关联或双方验证后自动关联);使用弹窗 OAuth(易被拦截或移动端失效,应改用整页重定向)。
相关模式:登录、注册、双因素认证。完整实现细节、示例与测试说明见 references/pattern.md,模式页为 https://uxpatterns.dev/patterns/authentication/social-login。