Skip to main content

社交登录配置指南

本文档详细介绍如何在 LangChat Pro 中配置各个社交登录平台。请按照对应平台的步骤完成配置。

目录


企业微信登录

1. 注册企业微信账号

访问 企业微信官网 注册企业账号。

2. 创建应用

  1. 登录企业微信管理后台
  2. 进入「应用管理」→「自建应用」
  3. 点击「创建应用」
  4. 填写应用信息:
    • 应用名称:LangChat
    • 应用Logo:上传应用Logo
    • 应用描述:AI应用平台登录
  5. 创建完成后,记录以下信息:
    • AgentId(应用ID)
    • Secret(应用密钥)
    image-20260117131838530

3. 获取企业ID

  1. 在企业微信管理后台
  2. 进入「我的企业」→「企业信息」
  3. 记录「CorpId(企业ID)」
image-20260117131958169

4. 配置授权回调域

  1. 进入应用详情页
  2. 点击「API权限」
  3. 在「授权回调域」中添加:
    • 开发环境:http://localhost:8100
    • 生产环境:https://your-domain.com
image-20260117132048611
注意:如上三个位置配置域名和信任IP,这里只需要配置域名即可不需要配置具体的回调地址 其中,信任IP是当前项目所在的公网/局域网IP地址(如果没有配置,后端授权会报错返回IP)
image-20260117132212420

5. 后端配置

application.yml 或对应环境配置文件中添加:
langchat:
  auth:
    social:
      enabled: true
      enterprise-wechat:
        enabled: true
        corp-id: ${ENTERPRISE_WECHAT_CORP_ID}
        agent-id: ${ENTERPRISE_WECHAT_AGENT_ID}
        secret: ${ENTERPRISE_WECHAT_SECRET}
        redirect-uri: ${ENTERPRISE_WECHAT_REDIRECT_URI}
环境变量配置:
# 企业ID
ENTERPRISE_WECHAT_CORP_ID=ww1234567890abcdef

# 应用AgentId
ENTERPRISE_WECHAT_AGENT_ID=1000001

# 应用Secret
ENTERPRISE_WECHAT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# 回调地址(需URL编码)
ENTERPRISE_WECHAT_REDIRECT_URI=https%3A%2F%2Fyour-domain.com%2Fsocial-login%2Fcallback%2Fenterprise_wechat

常见问题

Q: 扫码后页面无反应? A: 检查以下配置:
  • CorpId、AgentId、Secret 是否正确
  • redirect_uri 是否URL编码
  • 回调域是否添加到授权域名列表
  • 应用是否已发布
Q: 提示”Scope参数错误”? A: 企业微信登录需要配置应用权限:
  1. 进入应用详情页
  2. 点击「API权限」
  3. 确保已申请「成员读取权限」和「用户读取权限」
Q: 登录成功后如何获取用户信息? A: 企业微信登录会自动获取用户信息,无需额外配置。

微信开放平台登录

1. 注册微信开放平台账号

访问 微信开放平台 注册开发者账号。

2. 完成开发者认证

  1. 进入「账号中心」→「开发者资质认证」
  2. 填写企业信息并上传营业执照
  3. 完成微信支付认证(需要300元认证费)

3. 创建网站应用

  1. 进入「管理中心」→「创建网站应用」
  2. 填写应用信息:
    • 应用名称:LangChat
    • 应用Logo:上传应用Logo
    • 应用简介:AI应用平台
    • 官网地址:https://your-domain.com
  3. 提交审核(审核时间约7个工作日)

4. 获取应用凭证

审核通过后,记录以下信息:
  • AppID(应用唯一标识)
  • AppSecret(应用密钥)

5. 配置授权回调域

  1. 进入应用详情页
  2. 点击「开发配置」
  3. 在「授权回调域」中添加:
    • 开发环境:localhost:8100
    • 生产环境:your-domain.com

6. 后端配置

langchat:
  auth:
    social:
      enabled: true
      wechat:
        enabled: true
        app-id: ${WECHAT_APP_ID}
        app-secret: ${WECHAT_APP_SECRET}
        redirect-uri: ${WECHAT_REDIRECT_URI}
环境变量配置:
# AppID
WECHAT_APP_ID=wx1234567890abcdef

# AppSecret
WECHAT_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# 回调地址(需URL编码)
WECHAT_REDIRECT_URI=https%3A%2F%2Fyour-domain.com%2Fsocial-login%2Fcallback%2Fwechat

常见问题

Q: 提示”redirect_uri域名与后台配置不一致”? A: 检查以下内容:
  • redirect_uri 是否URL编码
  • 回调域是否精确匹配(不含路径)
  • 是否在正确的开放平台账号下创建的应用
Q: 微信扫码后无法回调? A: 检查服务器网络是否能访问微信服务器(默认端口443)。 Q: 提示”AppID无效”? A: 确认AppID格式正确,以wx开头,共18位。

钉钉登录

1. 注册钉钉开发者账号

访问 钉钉开放平台 注册开发者账号。
参考官网文档配置:https://open.dingtalk.com/document/development/obtain-identity-credentials

2. 创建应用

  1. 进入「应用开发」→「企业内部应用」→「钉钉应用」
  2. 点击「创建应用」 image-20260117132630214
  3. 填写应用信息:
    • 应用名称:LangChat
    • 应用Logo:上传Logo
    • 应用描述:AI应用平台
  4. 创建完成后,记录以下信息:
    • AppKey
    • AppSecret
    image-20260117132753968

3. 安全设置

  1. 进入「钉钉应用」→「开发配置」→「安全配置」
  2. 添加「重定向URL」:
    • 服务器出口IP:公网/局域网IP
    • 重定向URL:https://your-domain.com/social-login/callback/dingtalk
image-20260117133542775
注意:这里和企微一样要设置回调地址和IP

4. 申请权限

在「权限管理」中申请以下权限:
  • Contact.User.mobile
  • Contact.User.Read
image-20260117133253012

5. 后端配置

langchat:
  auth:
    social:
      enabled: true
      dingtalk:
        enabled: true
        app-key: ${DINGTALK_APP_KEY}
        app-secret: ${DINGTALK_APP_SECRET}
        redirect-uri: ${DINGTALK_REDIRECT_URI}
环境变量配置:
# AppKey
DINGTALK_APP_KEY=ding1234567890abcdef

# AppSecret
DINGTALK_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# 回调地址(需URL编码)
DINGTALK_REDIRECT_URI=https%3A%2F%2Fyour-domain.com%2Fsocial-login%2Fcallback%2Fdingtalk

6. 发布应用

最重要的一点,配置好应用后,一定要发布应用,保证此应用是 已上线 的状态
image-20260117133733090

常见问题

Q: 扫码后提示”应用未上架”? A: 钉钉要求应用必须先发布才能在移动端使用:
  1. 在应用详情页点击「版本管理」
  2. 创建新版本并填写版本信息
  3. 提交审核并发布
Q: 提示”appKey无效”? A: 确认AppKey格式正确,且应用状态为已启用。 Q: PC端扫码无反应? A: 检查是否在开发配置中添加了正确的重定向URL。

阿里云短信登录

1. 注册阿里云账号

访问 阿里云官网 注册账号。

2. 产品选择:短信服务 vs 号码认证服务

在阿里云中,有两个容易混淆的产品,需要注意区分:

2.1 短信服务(SMS)

特性说明
产品地址https://dysms.console.aliyun.com/overview
包名com.aliyun:dysmsapi20170525
APISendSmsSendBatchSms
特点发送实际短信,每条收费约0.045元
场景验证码、通知短信、营销短信
要求需要企业认证、签名+模板CODE
适用场景:需要发送实际短信通知

2.2 号码认证服务(PHN/PNS)

特性说明
产品地址https://dypns.console.aliyun.com/overview
包名com.aliyun:dypnsapi20170525
APISendSmsVerifyCodeGetSmsVerifyCode
特点阿里云随机号码发送,验证本机(免费/低价)
场景本机号码一键登录、短信验证码
要求签名+模板CODE,无需复杂认证
适用场景:验证码登录(当前项目使用)

2.3 对比总结

对比项短信服务(dysmsapi)号码认证服务(dypnsapi)
收费方式按条收费(约0.045元/条)按次计费(更便宜)
发送方号码需添加企业号码阿里云随机号码
企业认证需要不需要
模板审核需要需要
推荐场景营销通知验证码登录
当前项目默认使用号码认证服务(dypnsapi),因为它更适合验证码场景,无需复杂的企业认证。

3. 切换到短信服务(dysmsapi)

如果业务需要使用短信服务(dysmsapi),请按以下步骤修改代码:

3.1 修改 pom.xml 依赖

<!-- 原配置(号码认证服务) -->
<!-- <dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>dypnsapi20170525</artifactId>
    <version>2.0.0</version>
</dependency> -->

<!-- 新配置(短信服务) -->
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>dysmsapi20170525</artifactId>
    <version>4.4.0</version>
</dependency>

3.2 修改代码(SmsLoginStrategy.java)

// 原导入(号码认证服务)
import com.aliyun.dypnsapi20170525.Client;
import com.aliyun.dypnsapi20170525.models.SendSmsVerifyCodeRequest;
import com.aliyun.dypnsapi20170525.models.SendSmsVerifyCodeResponse;

// 新导入(短信服务)
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;

3.3 修改 API 调用

// 原代码(号码认证服务)
SendSmsVerifyCodeRequest request = new SendSmsVerifyCodeRequest()
        .setSignName(smsConfig.getSignName())
        .setTemplateCode(smsConfig.getTemplateCode())
        .setPhoneNumber(target)
        .setTemplateParam(templateParam);
SendSmsVerifyCodeResponse resp = client.sendSmsVerifyCodeWithOptions(request, runtime);

// 新代码(短信服务)
SendSmsRequest request = new SendSmsRequest()
        .setSignName(smsConfig.getSignName())
        .setTemplateCode(smsConfig.getTemplateCode())
        .setPhoneNumbers(target)
        .setTemplateParam(templateParam);
SendSmsResponse resp = client.sendSmsWithOptions(request, runtime);

3.4 注意事项

  1. 模板变量:短信服务的模板变量格式可能与号码认证服务不同,请以阿里云控制台模板为准
  2. 手机号格式:短信服务可能需要带国家码(如 86 前缀)
  3. API 响应:两种服务的响应结构不同,需要相应调整解析逻辑

4. 获取账号的 Key

点击右上角头像获取 KEY image-20260117134421706 image-20260117134421706

4. 后端配置

langchat:
  auth:
    social:
      enabled: true
      sms:
        enabled: true
        access-key-id: ${ALIYUN_SMS_ACCESS_KEY_ID}
        access-key-secret: ${ALIYUN_SMS_ACCESS_KEY_SECRET}
        sign-name: ${ALIYUN_SMS_SIGN_NAME}
        template-code: ${ALIYUN_SMS_TEMPLATE_CODE}
环境变量配置:
# AccessKey ID
ALIYUN_SMS_ACCESS_KEY_ID=LTAIxxxxxxxxxxxxxxxxxx

# AccessKey Secret
ALIYUN_SMS_ACCESS_KEY_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# 签名名称(需与审核通过的签名一致)
ALIYUN_SMS_SIGN_NAME=LangChat

# 模板CODE
ALIYUN_SMS_TEMPLATE_CODE=SMS_123456789

5. 验证码有效期配置

application.yml 中配置验证码有效期:
langchat:
  auth:
    social:
      sms:
        # 验证码有效期(秒),默认300秒(5分钟)
        expire-in: 300
        # 验证码长度,默认4位
        code-length: 4

6. API调用限制

阿里云短信服务有调用频率限制:
限制项普通用户企业用户
短信发送频率1条/秒10条/秒
每日发送量200条无限制
月度配额5000条按需购买
如需更高配额,可在「短信服务」→「配额管理」中申请。

常见问题

Q: 提示”签名不存在或未审核通过”? A: 检查签名名称是否与审核通过的完全一致,包括大小写。 Q: 提示”模板未审核通过”? A: 确保模板类型选择「验证码」,且模板内容符合规范。 Q: 收不到短信? A: 按以下顺序排查:
  1. 检查手机号是否正确
  2. 检查短信是否被拦截
  3. 查看阿里云控制台「业务统计」中的发送记录
  4. 确认账户余额充足
Q: 提示”超出每日发送限制”? A: 确认账户类型和配额,如需更高配额可升级企业用户。

邮件登录

1. 选择邮件服务

LangChat 支持两种邮件登录方式: 方式一:直接使用现有邮箱(SMTP) 使用任意支持SMTP的邮箱服务(QQ邮箱、网易邮箱、企业邮箱等)。 方式二:使用邮件服务API(推荐企业用户)
  • 阿里云邮件推送
  • 腾讯企业邮
  • SendGrid
  • Amazon SES

2. SMTP配置(以QQ邮箱为例)

  1. 登录QQ邮箱
  2. 进入「设置」→「账户」
  3. 找到「POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务」
  4. 开启「IMAP/SMTP服务」
  5. 发送短信验证
  6. 生成授权码(记录此授权码作为密码)

3. 阿里云邮件推送配置

  1. 进入「邮件推送」产品页
  2. 点击「立即开通」
  3. 进入「发信域名」添加域名
  4. 配置域名DNS解析(添加SPF和DKIM记录)
  5. 进入「发信地址」创建发信地址
  6. 记录AccessKey和AccessKeySecret

4. 后端配置

langchat:
  auth:
    social:
      enabled: true
      email:
        enabled: true
        host: ${EMAIL_HOST}
        port: ${EMAIL_PORT}
        username: ${EMAIL_USERNAME}
        pass: ${EMAIL_PASSWORD}
        from: ${EMAIL_FROM}
        ssl: true
环境变量配置(QQ邮箱示例):
# SMTP服务器地址
EMAIL_HOST=smtp.qq.com

# SMTP端口(SSL为465,普通为587)
EMAIL_PORT=465

# 邮箱用户名
EMAIL_USERNAME=your-email@qq.com

# 授权码(非登录密码)
EMAIL_PASSWORD=xxxxxxxxxxxxxxxx

# 发件人显示名称
EMAIL_FROM=LangChat <your-email@qq.com>

# 是否使用SSL
EMAIL_SSL=true
阿里云邮件推送配置:
# 发信域名(需要在阿里云控制台配置)
EMAIL_HOST=smtpdm.aliyun.com

# SMTP端口
EMAIL_PORT=465

# 发信地址
EMAIL_USERNAME=your-tag@your-domain.com

# 发信地址对应的密码
EMAIL_PASSWORD=xxxxxxxxxxxxxxxx

# 发件人
EMAIL_FROM=LangChat <your-tag@your-domain.com>

5. 验证码有效期配置

langchat:
  auth:
    social:
      email:
        # 验证码有效期(秒),默认300秒(5分钟)
        expire-in: 300
        # 验证码长度,默认6位
        code-length: 6

常见问题

Q: 收不到邮件? A: 检查以下内容:
  1. 检查垃圾邮件箱
  2. 确认邮箱地址正确
  3. 检查SMTP配置是否正确
  4. 确认发件人域名未在黑名单中
Q: 提示”535 Authentication failed”? A: 确认密码使用的是授权码(QQ邮箱、网易邮箱),而非登录密码。 Q: 邮件发送延迟? A: SMTP发送可能存在延迟(1-5分钟),如需实时性更高的服务,建议使用阿里云邮件推送或短信服务。

环境变量统一管理

方式一:环境变量文件

在服务器或开发环境设置环境变量:
# 企业微信
export ENTERPRISE_WECHAT_CORP_ID=your-corp-id
export ENTERPRISE_WECHAT_AGENT_ID=your-agent-id
export ENTERPRISE_WECHAT_SECRET=your-secret

# 微信开放平台
export WECHAT_APP_ID=your-app-id
export WECHAT_APP_SECRET=your-app-secret

# 钉钉
export DINGTALK_APP_KEY=your-app-key
export DINGTALK_APP_SECRET=your-app-secret

# 阿里云短信
export ALIYUN_SMS_ACCESS_KEY_ID=your-access-key-id
export ALIYUN_SMS_ACCESS_KEY_SECRET=your-access-key-secret
export ALIYUN_SMS_SIGN_NAME=your-sign-name
export ALIYUN_SMS_TEMPLATE_CODE=your-template-code

# 邮件
export EMAIL_HOST=smtp.example.com
export EMAIL_PORT=465
export EMAIL_USERNAME=your-email
export EMAIL_PASSWORD=your-password
export EMAIL_FROM=your-from

方式二:.env文件(开发环境)

langchat-bootstrap 目录下创建 .env 文件:
# 企业微信
ENTERPRISE_WECHAT_CORP_ID=your-corp-id
ENTERPRISE_WECHAT_AGENT_ID=your-agent-id
ENTERPRISE_WECHAT_SECRET=your-secret

# 微信开放平台
WECHAT_APP_ID=your-app-id
WECHAT_APP_SECRET=your-app-secret

# 钉钉
DINGTALK_APP_KEY=your-app-key
DINGTALK_APP_SECRET=your-app-secret

# 阿里云短信
ALIYUN_SMS_ACCESS_KEY_ID=your-access-key-id
ALIYUN_SMS_ACCESS_KEY_SECRET=your-access-key-secret
ALIYUN_SMS_SIGN_NAME=your-sign-name
ALIYUN_SMS_TEMPLATE_CODE=your-template-code

# 邮件
EMAIL_HOST=smtp.example.com
EMAIL_PORT=465
EMAIL_USERNAME=your-email
EMAIL_PASSWORD=your-password
EMAIL_FROM=your-from

安全建议

1. 敏感信息保护

  • 不要将 AppSecret、AccessKey 等敏感信息提交到代码仓库
  • 使用环境变量或配置中心管理敏感信息
  • 定期轮换密钥(建议每3个月)

2. 网络安全

  • 生产环境启用 HTTPS
  • 配置 IP 白名单限制 API 访问
  • 使用防火墙限制数据库访问

3. 业务安全

  • 限制验证码发送频率(同一手机号/邮箱1分钟1次)
  • 限制同一 IP 的请求频率
  • 记录登录日志便于审计

监控与告警

建议监控指标

  1. 社交登录成功率
  2. 各平台登录次数分布
  3. 验证码发送失败率
  4. API 调用失败日志

告警规则建议

  • 登录成功率低于 95% 时告警
  • 验证码发送失败率高于 5% 时告警
  • API 调用异常激增时告警

相关文档