本文件说明如何在 Simple Easy Social Login(SESLP) 插件中, 配置各个社交登录服务提供商(Google、Facebook、LinkedIn、Naver、Kakao、LINE)。
所有登录均基于 OAuth 2.0 / OpenID Connect(OIDC)。
您必须在各提供商的开发者控制台中创建应用(Client), 并将 Client ID / Client Secret 填写到 SESLP 中。
https://{your-domain}/?social_login={provider}
示例:
https://example.com/?social_login=googlehttps://example.com/?social_login=facebookhttps://example.com/?social_login=linkedinhttps://example.com/?social_login=naverhttps://example.com/?social_login=kakaohttps://example.com/?social_login=line大多数提供商要求使用 HTTPS,并会拒绝 http:// 的重定向请求。
控制台中设置的 Redirect URI 必须与 SESLP 发送的 URI 100% 完全一致 (包括协议、子域名、路径、末尾斜杠和查询参数)。
部分提供商允许用户拒绝共享电子邮箱。SESLP 可以使用稳定的提供商 ID 来进行账号关联。
/wp-content/SESLP-debug.log/wp-content/debug.log(WP_DEBUG_LOG = true)/wp-content/SESLP-debug.log(SESLP 调试日志)/wp-content/debug.log(WP_DEBUG_LOG = true)[YYYY-MM-DD HH:MM:SS Z] [LEVEL] 消息 {"key":"value",...}
Z:UTC 或 WordPress 本地时间(例如 KST)— 可在 SESLP 设置中选择r********@g****.com)
1) OAuth 开始
[DEBUG] State created {"provider":"google","state":"906****23","ttl":"10min"}
说明:创建用于 CSRF 防护的 state token。ttl 有效期为 10 分钟。
2) Callback 触发
[DEBUG] Auth route triggered {"provider":"google","has_code":1}
说明:已进入回调。has_code:1 → 已获取 OAuth code。
3) State 验证
成功:
[DEBUG] State validated {"provider":"google","state":"906****23"}
失败:
[WARNING] State validation failed: not found/expired {"provider":"google","state":"906****23"}
4) Token 交换
[DEBUG] Token response (google) {"has_access_token":1}
说明:成功获取 Token。
失败:
[ERROR] Token request failed (google) {"error":"..."}
5) 用户信息请求
[ERROR] Userinfo request failed (google)
[WARNING] Invalid userinfo (google)
6) 用户关联
[DEBUG] Linker: signing in user {"user_id":45,"provider":"google","created":0}
[INFO] Login success (google) {"user_id":45,"email":"r********@g****.com"}
7) 重定向
[DEBUG] Redirect decision {"mode":"profile","user_id":45,"url":"https://example.com/wp-admin/profile.php"}
| 日志信息(简述) | 可能原因 | 处理方式 |
|---|---|---|
| State validation failed | 超时、切换标签页、重复请求 | 快速重试或使用无痕模式 |
| Token request failed | Client ID/Secret/Redirect 错误或请求被阻止 | 检查开发者控制台、防火墙、服务器时间 |
| Userinfo invalid | 缺少 scope 或 email 为私密 | 添加 email, profile scope,并获取用户同意 |
| User create failed | 账号冲突或 WordPress 限制 | 检查已有用户、多站点设置 |
| Redirect missing | 代码过早 return | 确保 Redirect 类在 callback 后执行 |
请展开下方各个提供商,并粘贴您为该提供商准备的英文指南内容。
openid email profilehttps://{domain}/?social_login=google(1) 建议/必须使用 HTTPS(本地环境请使用可信的开发证书)。
(2) Redirect URI 必须与控制台中注册的值100% 完全一致。例如:https://example.com/?social_login=google
(3) 在测试模式下,仅测试用户可以登录(最多 100 个用户)。
(4) 使用应用主页/隐私政策/服务条款 URL 时,可能需要进行应用域名(Authorized domains)注册及域名所有权验证。
(1) 访问 Google Cloud Console。
https://console.cloud.google.com/apis/credentials
(2) 顶部选择项目 → 创建新项目(如有需要)。
(3) 侧边栏:进入 APIs & Services → OAuth consent screen。
(4) 选择 User Type:通常为 External。
(5) 填写 应用信息:应用名称、用户支持邮箱、(可选)Logo。
(6) 应用域名 部分
(7) 配置 Scopes
openid、email、profile(8) 添加测试用户(测试模式下允许登录的邮箱)。
(9) 保存。
注意:仅使用基础权限(openid email profile)通常可以无需审核即可发布使用。
(1) 侧边栏:APIs & Services → Credentials。
(2) 顶部:+ Create Credentials → OAuth client ID。
(3) 应用类型:Web application。
(4) 输入一个易于区分的名称(例如:SESLP – Front)。
(5) 添加Authorized redirect URIs
https://{domain}/?social_login=google(6) 点击 Create,然后复制生成的 Client ID / Client Secret。
(可选)本插件使用授权码模式,一般不需要配置 Authorized JavaScript origins。
(1) WP 后台 → SESLP Settings → Google 标签页。
(2) 粘贴 Client ID / Client Secret → 保存。
(3) 在网站前端点击Google 登录按钮进行测试。
(1) 查看 OAuth consent screen → Publishing status。
(2) 切换到正式环境前:
(3) 切换后,所有 Google 账户均可登录。
(1) redirect_uri_mismatch
→ 当控制台中注册的 Redirect URI 与实际请求 URI 有任何差异(协议、子域、路径、参数等)时会发生。请确保完全一致。
(2) access_denied / disallowed_useragent
→ 浏览器或内嵌环境限制。请使用普通浏览器重试。
(3) invalid_client / unauthorized_client
→ Client ID/Secret 输入错误或应用状态异常(被删除/禁用)。请重新检查或生成。
(4) Email 为空
→ 检查是否包含 email 权限、同意屏幕展示情况以及账户邮箱可见性设置。请在同意页面中明确说明邮箱用途。
日志查看:
wp-content/SESLP-debug.log(插件调试开启)wp-content/debug.log(WP_DEBUG, WP_DEBUG_LOG = true)https://{domain}/?social_login=googlehttps://{domain}/?social_login=facebookpublic_profile、emailopenid。(1) 前往 Meta for Developers → 登录
https://developers.facebook.com/
(2) 点击 Create App → 选择一般类型(例如 Consumer)→ 创建应用
(3) 在左侧菜单中,从 Products 添加 Facebook Login
(4) 前往 Settings → 确认以下项目:
https://{domain}/?social_login=facebook(1) App Domains: example.com(应用政策/条款/主页所属域名)
(2) Privacy Policy URL: 可公开访问的隐私政策页面
(3) Terms of Service URL: 可公开访问的服务条款页面
(4) User Data Deletion: 提供说明页面或数据删除端点
(5) Category / App Icon: 设置完成后点击 Save
(1) 一般登录所需的基本权限为 public_profile;可选电子邮箱为 email
(2) 大多数情况下,email 可在无需审核的情况下使用,但可能因地区/账号不同而有所差异
(3) 高级权限(如 pages/ads)需通过 App Review 与 Business Verification
在应用顶部或设置区域,将 App Mode:Development → Live
(1) WP 后台 → SESLP Settings → Facebook
(2) 输入 App ID / App Secret → 保存
(3) 在前端使用 Facebook 登录按钮 进行测试
(1) Can't Load URL / redirect_uri error
→ 请确认在 Valid OAuth Redirect URIs 中注册的 URI 与实际请求完全一致(包括协议、子域名、斜杠与查询参数)
(2) email 为 null
→ 用户未在 Facebook 注册电子邮箱或设为私密。请准备基于 ID 的账号绑定逻辑,并在同意页面中清楚说明电子邮箱用途
(3) 权限相关错误
→ 若请求权限超出基本范围,则需进行 App Review / Business Verification
(4) 无法切换为 Live
→ 若隐私政策 / 条款 / 数据删除页面未提供或不可公开访问,则无法切换,需提供公开网址
https://{domain}/?social_login=linkedinopenid、profile、emailr_liteprofile、r_emailaddress)。(1) 前往 LinkedIn Developers Console
→ https://www.linkedin.com/developers/apps
(2) 使用 LinkedIn 账号登录
(3) 点击 Create app
(4) 填写必要信息:
MySite LinkedIn Login(5) 点击 Create app
默认处于开发模式 → 可立即测试 openid、profile、email 登录,无需发布
(1) 前往 Products 页面
(2) 找到 Sign In with LinkedIn using OpenID Connect
(3) 点击 Add product → 即时批准
(4) OIDC 设置会显示在 Auth 页面中
OIDC 必要权限
openid → 返回 ID Tokenprofile → 姓名、头像、标题等email → 电子邮箱地址(1) 前往 Auth → OAuth 2.0 settings
(2) 在 Redirect URLs 中添加:
→ https://{domain}/?social_login=linkedin
(3) 必须完全一致(协议、子域名、斜杠、查询参数)
(4) 如有需要,可注册多个:
https://localhost:3000/?social_login=linkedinhttps://staging.example.com/?social_login=linkedinhttps://example.com/?social_login=linkedin(5) 点击 Save
(1) 在 Auth 页面中找到:
(2) WordPress 后台 → SESLP Settings → LinkedIn
(3) 粘贴后 → 保存
(4) 在前端测试 LinkedIn 登录按钮
安全性:
| 权限 | 说明 | 备注 |
|---|---|---|
openid |
返回 OIDC 标准 ID Token | 必需 |
profile |
姓名、头像、标题等 | 必需 |
email |
电子邮箱地址 | 必需 |
旧版权限(r_liteprofile、r_emailaddress)
(1) redirect_uri_mismatch
→ URI 有任何差异都会导致错误 → 请确保 100% 完全一致
(2) invalid_client
→ ID/Secret 错误或应用未启用 → 请重新检查或重新生成
(3) email 为 NULL
→ 用户拒绝或未包含 email 权限 → 请在同意页面说明用途
(4) insufficient_scope
→ 请求的权限未获批准 → 请确认已启用 OIDC
(5) 未启用 OIDC
→ Products 中缺少 Sign In with LinkedIn using OpenID Connect
日志:
/wp-content/SESLP-debug.log/wp-content/debug.logopenid profile email(不使用旧版权限)注意:
https://{domain}/?social_login=navername)、电子邮箱(email)(1) 前往 Naver Developer Center
→ https://developers.naver.com/apps/
(2) 使用 Naver 账号登录
(3) 点击 Application → Register Application
(4) 填写必要信息:
MySite Naver LoginNaver Login(네아로)https://example.comhttps://example.com/?social_login=naver(5) 同意条款 → Register
注意:
(1) 前往 My Applications
(2) 点击应用 → 复制 Client ID 和 Client Secret
(1) WP 后台 → SESLP Settings → Naver
(2) 粘贴 Client ID / Client Secret
(3) 确认 Redirect URI 完全一致:https://{domain}/?social_login=naver
(4) Save → 在前端使用 Naver 登录按钮测试
| 数据 | 权限 | 备注 |
|---|---|---|
| 姓名 | name |
默认 |
| 电子邮箱 | email |
默认 |
| 性别、生日 | 附加项目 | 需要审核 |
email = null → 请使用基于 ID 的账号绑定(1) Redirect URI 不匹配
→ 只要有细微差异都会报错 → 请确保 100% 完全一致
(2) HTTP 错误
→ 必须使用 HTTPS
(3) 子域名错误
→ 每个子域名需分别注册
(4) email 为 NULL
→ 用户拒绝或设为私密 → 请准备 ID 绑定逻辑
(5) 需要审核
→ 基础登录:无需审核
→ 附加数据:需要审核
日志:
/wp-content/SESLP-debug.log/wp-content/debug.log注意:
name、email)无需审核即可使用。https://{domain}/?social_login=kakaoprofile_nickname、profile_image、account_emailaccount_email 仅在完成身份验证或企业验证后可用(1) 前往 Kakao Developers
→ https://developers.kakao.com/
(2) 登录 → My Applications → Add New App
(3) 输入:
(4) Save
(1) Product Settings > Kakao Login
(2) 将 Enable Kakao Login 切换为 ON
(3) 注册 Redirect URI
https://{domain}/?social_login=kakao(4) 域名必须与 Platform site domain 一致
(1) Consent Items
(2) 添加并设置:
| Scope | 说明 | 同意类型 | 备注 |
|---|---|---|---|
profile_nickname |
昵称 | 必选 / 可选 | 基本信息 |
profile_image |
头像 | 必选 / 可选 | 基本信息 |
account_email |
电子邮箱 | 可选 | 需要验证 |
(3) 为每一项清楚说明其用途
(4) Save
注意:敏感权限需要验证
(1) App Settings > Platform
(2) Register Web Platform
(3) 网站域名:https://{domain}
(4) Save → 必须与 Redirect URI 的域名一致
(1) Product Settings > Security
(2) Use Client Secret → ON
(3) Generate Secret → 复制其值
(4) Activation Status → Active
(5) Save
重要:生成后必须启用
(1) App Keys
(2) 复制 REST API Key → 作为 Client ID 使用
(1) WP 后台 → SESLP Settings → Kakao
(2) Client ID = REST API Key
Client Secret = 生成的 Secret
(3) Save
(4) 使用 Kakao Login Button 进行测试
(1) redirect_uri_mismatch → 必须 100% 完全一致
(2) invalid_client → Secret 未启用或输入错误
(3) email empty → 用户拒绝提供或尚未验证
(4) Domain mismatch → Platform 与 Redirect URI 域名不一致
(5) HTTP forbidden → 仅支持 HTTPS
日志:
/wp-content/SESLP-debug.log/wp-content/debug.loghttps://{domain}/?social_login=lineopenid、profile、email(1) 前往 LINE Developers Console
→ https://developers.line.biz/console/
(2) 使用 LINE Business Account 登录(不允许个人账号)
(3) 点击 Create a new provider → 输入名称 → Create
(4) 在该 Provider 下 → Channels 标签页
(5) 选择 Create a LINE Login channel
(6) 配置内容:
LINE LoginSouth Korea、Japan)(7) 同意条款 → Create
(1) 前往左侧菜单中的 OpenID Connect
(2) 在 Email address permission 旁点击 Apply
(3) 填写申请信息:
(4) email 权限仅在审批通过后可用
→ 审批通常需要 1~3 个工作日
(1) 前往左侧菜单中的 LINE Login
(2) 输入 Callback URL:
→ https://{domain}/?social_login=line
(3) 必须完全一致:
https://(不允许 HTTP)(4) 点击 Save
(5) 将 Channel 状态设置为 Published
(1) 在 Channel 页面顶部或 Basic settings
(2) Channel ID → SESLP 的 Client ID
Channel Secret → SESLP 的 Client Secret
(1) WP 后台 → SESLP Settings → LINE
(2) Client ID ← Channel ID
Client Secret ← Channel Secret
(3) Save
(4) 在前端使用 LINE 登录按钮 进行测试
(1) redirect_uri_mismatch → 只要有细微差异就会报错 → 请确保 100% 完全一致
(2) invalid_client → Secret 输入错误,或 Channel 尚未发布(Published)
(3) email 为 NULL → 电子邮箱权限尚未批准,或用户已拒绝
(4) 不允许 HTTP → 必须使用 HTTPS(localhost 的 HTTPS 可接受)
(5) 开发模式限制 → 仅测试账号可登录
日志:
/wp-content/SESLP-debug.log/wp-content/debug.log注意:SESLP 完整支持