一、QQ第三方登录流程
1. 开发者注册与配置
- 申请AppID/AppKey:在QQ互联平台创建应用,填写网站域名及回调地址,审核通过后获取
appid
和appkey
- 域名验证:确保服务器能连通
graph.qq.com
,回调地址需与注册信息一致
2. 前端授权流程
- 生成授权链接:构造跳转URL,引导用户至QQ授权页:
https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=APPID&redirect_uri=回调地址&state=随机数
state
参数用于防CSRF攻击,scope
定义权限范围(如获取基础信息)
- 用户授权:用户确认后,QQ将携带
code
重定向至回调地址,格式如:回调地址?code=CODE&state=STATE
3. 后端令牌交换
- 换取Access Token:使用
code
向接口https://graph.qq.com/oauth2.0/token
发送请求,参数包括grant_type=authorization_code
、client_id
、client_secret
,返回access_token
和expires_in
(默认30天有效期) - 获取OpenID:调用
https://graph.qq.com/oauth2.0/me
接口,解析返回的openid
(用户唯一标识)
4. 用户信息获取
- 拉取用户数据:通过
access_token
和openid
访问https://graph.qq.com/user/get_user_info
,获取昵称、头像等基本信息
5. 安全与优化
- 自动续期:用户再次登录时自动刷新
access_token
,无需手动处理 - 存储策略:建议将
openid
与本地账号关联,支持多平台统一登录(如绑定手机号)
二、微信网页授权登录流程
1. 应用配置
- 开放平台注册:在微信开放平台创建网站应用,配置授权回调域名,审核通过后获取
AppID
和AppSecret
- 域名限制:回调地址需全匹配(含协议和端口)。
2. 前端授权流程
- 构造授权链接:生成带参数的二维码或跳转链接:
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=回调地址&response_type=code&scope=snsapi_login&state=随机数
snsapi_login
表示需用户主动授权,snsapi_base
支持静默授权
3. 后端令牌处理
- 换取Access Token:使用
code
调用接口https://api.weixin.qq.com/sns/oauth2/access_token
,参数包括appid
、secret
、code
,返回access_token
(有效期2小时)和openid
- 获取用户信息:通过
https://api.weixin.qq.com/sns/userinfo
接口获取昵称、头像、地区等详细信息(需scope=snsapi_userinfo
)
4. 高级特性
- UnionID机制:若需跨公众号/小程序统一用户标识,需申请开通
UnionID
功能 - 安全建议:
access_token
由服务端保管,避免前端暴露;通过refresh_token
续期令牌
三、支付宝第三方登录流程
1. 开发者配置
- 开放平台申请:在支付宝开放平台创建应用,配置应用公钥并提交审核,获取
app_id
和私钥 - 加签方式:必须使用RSA2签名算法,需上传应用公钥至平台
2. 授权与令牌获取
- 生成授权链接:构造跳转URL,引导用户至支付宝授权页:
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=auth_user&redirect_uri=回调地址
scope=auth_user
需用户授权,auth_base
支持静默获取user_id
- 换取Access Token:用户授权后,使用
auth_code
调用alipay.system.oauth.token
接口,参数需签名,返回access_token
(有效期1小时)和user_id
(2088开头的唯一标识)
3. 用户信息获取
- 拉取用户数据:通过
access_token
调用alipay.user.info.share
接口,获取昵称、头像、性别等信息
4. 安全与扩展
- 签名验证:所有请求需按参数名排序后生成签名,防止篡改
- 多应用打通:支付宝无
UnionID
机制,需通过手机号或本地账号体系关联用户
四、核心差异对比
特性 | 微信 | 支付宝 | |
---|---|---|---|
用户标识 | openid (应用内唯一) | openid + unionid (跨应用) | user_id (应用内唯一) |
令牌有效期 | 30天(自动刷新) | 2小时(可续期) | 1小时(需重新授权) |
授权方式 | 显式授权(需用户确认) | 支持静默(snsapi_base ) | 显式(auth_user )或静默(auth_base ) |
签名机制 | 无,依赖appkey | 无,依赖AppSecret | RSA2签名(需公钥/私钥对) |
典型应用场景 | 腾讯系游戏、论坛 | 公众号、小程序生态 | 电商、生活服务类应用 |
五、开发建议
- 统一用户体系:
- QQ/微信可通过
UnionID
关联多平台账号,支付宝需自行设计绑定逻辑(如手机号)
- QQ/微信可通过
- 错误处理:
- QQ:检查
state
防CSRF,处理code
过期(返回100010) - 微信:捕获
40029
(code
无效)、48001
(API权限不足) - 支付宝:校验签名失败返回
INVALID_SIGNATURE
,auth_code
过期需重新授权
- QQ:检查
- 性能优化:
- 微信/支付宝建议缓存
access_token
,避免频繁调用接口
- 微信/支付宝建议缓存
如需具体代码实现或更详细配置步骤,可参考对应平台的官方文档(如QQ互联、微信开放平台、支付宝开放平台)。
一、QQ第三方登录流程
1. 开发者注册与配置
- 申请AppID/AppKey:在QQ互联平台创建应用,填写网站域名及回调地址,审核通过后获取
appid
和appkey
- 域名验证:确保服务器能连通
graph.qq.com
,回调地址需与注册信息一致
2. 前端授权流程
- 生成授权链接:构造跳转URL,引导用户至QQ授权页:
https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=APPID&redirect_uri=回调地址&state=随机数
state
参数用于防CSRF攻击,scope
定义权限范围(如获取基础信息)
- 用户授权:用户确认后,QQ将携带
code
重定向至回调地址,格式如:回调地址?code=CODE&state=STATE
3. 后端令牌交换
- 换取Access Token:使用
code
向接口https://graph.qq.com/oauth2.0/token
发送请求,参数包括grant_type=authorization_code
、client_id
、client_secret
,返回access_token
和expires_in
(默认30天有效期) - 获取OpenID:调用
https://graph.qq.com/oauth2.0/me
接口,解析返回的openid
(用户唯一标识)
4. 用户信息获取
- 拉取用户数据:通过
access_token
和openid
访问https://graph.qq.com/user/get_user_info
,获取昵称、头像等基本信息
5. 安全与优化
- 自动续期:用户再次登录时自动刷新
access_token
,无需手动处理 - 存储策略:建议将
openid
与本地账号关联,支持多平台统一登录(如绑定手机号)
二、微信网页授权登录流程
1. 应用配置
- 开放平台注册:在微信开放平台创建网站应用,配置授权回调域名,审核通过后获取
AppID
和AppSecret
- 域名限制:回调地址需全匹配(含协议和端口)
2. 前端授权流程
- 构造授权链接:生成带参数的二维码或跳转链接:
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=回调地址&response_type=code&scope=snsapi_login&state=随机数
snsapi_login
表示需用户主动授权,snsapi_base
支持静默授权
3. 后端令牌处理
- 换取Access Token:使用
code
调用接口https://api.weixin.qq.com/sns/oauth2/access_token
,参数包括appid
、secret
、code
,返回access_token
(有效期2小时)和openid
- 获取用户信息:通过
https://api.weixin.qq.com/sns/userinfo
接口获取昵称、头像、地区等详细信息(需scope=snsapi_userinfo
)
4. 高级特性
- UnionID机制:若需跨公众号/小程序统一用户标识,需申请开通
UnionID
功能 - 安全建议:
access_token
由服务端保管,避免前端暴露;通过refresh_token
续期令牌
三、支付宝第三方登录流程
1. 开发者配置
- 开放平台申请:在支付宝开放平台创建应用,配置应用公钥并提交审核,获取
app_id
和私钥 - 加签方式:必须使用RSA2签名算法,需上传应用公钥至平台
2. 授权与令牌获取
- 生成授权链接:构造跳转URL,引导用户至支付宝授权页:
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=auth_user&redirect_uri=回调地址
scope=auth_user
需用户授权,auth_base
支持静默获取user_id
- 换取Access Token:用户授权后,使用
auth_code
调用alipay.system.oauth.token
接口,参数需签名,返回access_token
(有效期1小时)和user_id
(2088开头的唯一标识)
3. 用户信息获取
- 拉取用户数据:通过
access_token
调用alipay.user.info.share
接口,获取昵称、头像、性别等信息
4. 安全与扩展
- 签名验证:所有请求需按参数名排序后生成签名,防止篡改
- 多应用打通:支付宝无
UnionID
机制,需通过手机号或本地账号体系关联用户
四、核心差异对比
特性 | 微信 | 支付宝 | |
---|---|---|---|
用户标识 | openid (应用内唯一) | openid + unionid (跨应用) | user_id (应用内唯一) |
令牌有效期 | 30天(自动刷新) | 2小时(可续期) | 1小时(需重新授权) |
授权方式 | 显式授权(需用户确认) | 支持静默(snsapi_base ) | 显式(auth_user )或静默(auth_base ) |
签名机制 | 无,依赖appkey | 无,依赖AppSecret | RSA2签名(需公钥/私钥对) |
典型应用场景 | 腾讯系游戏、论坛 | 公众号、小程序生态 | 电商、生活服务类应用 |
五、开发建议
- 统一用户体系:
- QQ/微信可通过
UnionID
关联多平台账号,支付宝需自行设计绑定逻辑(如手机号)
- QQ/微信可通过
- 错误处理:
- QQ:检查
state
防CSRF,处理code
过期(返回100010) - 微信:捕获
40029
(code
无效)、48001
(API权限不足) - 支付宝:校验签名失败返回
INVALID_SIGNATURE
,auth_code
过期需重新授权
- QQ:检查
- 性能优化:
- 微信/支付宝建议缓存
access_token
,避免频繁调用接口
- 微信/支付宝建议缓存
如需具体代码实现或更详细配置步骤,可参考对应平台的官方文档(如QQ互联、微信开放平台、支付宝开放平台)。