微信扫码登录完整流程

微信扫码登录完整流程

微信扫码登录基于OAuth2.0协议,通过授权码模式实现第三方应用的用户身份验证。以下是完整流程的详细步骤:

1. 准备工作

注册应用:在微信开放平台注册应用,获取AppID和AppSecret。

配置回调域名:设置授权后的回调地址(redirect_uri),需通过微信审核。

2. 生成登录二维码

前端请求:用户进入登录页时,第三方应用前端请求生成二维码。

构造二维码内容:

https://open.weixin.qq.com/connect/qrconnect?

appid=APPID&

redirect_uri=ENCODED_REDIRECT_URI&

response_type=code&

scope=snsapi_login&

state=STATE#wechat_redirect 参数说明:

appid:应用唯一标识。

redirect_uri:用户授权后跳转的URL(需URL编码)。

scope:授权作用域(如snsapi_login静默授权,snsapi_userinfo需用户确认)。

state:随机字符串,防CSRF攻击。

3. 用户扫码并授权

扫码动作:用户使用微信扫描二维码,微信客户端解析内容并跳转至授权页。

用户确认:用户在微信内点击“同意登录”,授权第三方应用获取基本信息。

4. 微信返回授权码(Code)

重定向回调:微信将用户重定向到redirect_uri,并附带参数:

redirect_uri?code=AUTHORIZATION_CODE&state=STATE 验证State:第三方后端校验state参数是否匹配,防止伪造请求。

5. 换取Access Token

后端请求Token:使用code向微信服务器换取访问令牌:

POST https://api.weixin.qq.com/sns/oauth2/access_token?

appid=APPID&

secret=APPSECRET&

code=CODE&

grant_type=authorization_code 响应示例: {

"access_token": "ACCESS_TOKEN",

"expires_in": 7200,

"refresh_token": "REFRESH_TOKEN",

"openid": "OPENID",

"scope": "snsapi_login"

} 6. 获取用户信息 调用用户接口:使用access_token和openid获取用户详细信息:

GET https://api.weixin.qq.com/sns/userinfo?

access_token=ACCESS_TOKEN&

openid=OPENID&

lang=zh_CN 响应示例: {

"openid": "OPENID",

"nickname": "用户昵称",

"headimgurl": "头像URL",

"unionid": "UNIONID" // 若存在微信开放平台绑定

} 7. 第三方应用处理登录 绑定本地账号:根据openid/unionid判断用户是否已注册:

已注册:直接登录,生成会话凭证(如JWT)。

未注册:创建新账号并关联微信信息。

返回前端状态:通知前端登录成功,跳转至首页。

8. 安全与异常处理

Token刷新:通过refresh_token刷新过期的access_token。

错误码处理:如code失效、用户拒绝授权等,需友好提示用户。

HTTPS:全程使用HTTPS确保数据安全。

时序图

关键注意事项

二维码有效期:通常为5分钟,超时需重新生成。

用户取消处理:监听取消事件,更新前端状态。

UnionID机制:跨应用统一用户标识需绑定开放平台。

频率限制:微信API有调用频率限制,需合理设计重试机制。

通过以上流程,第三方应用可安全高效地实现微信扫码登录功能。

相关推荐

360手机助手怎么样?功能强大吗 365体育是正规的吗

360手机助手怎么样?功能强大吗

📅 08-07 👁️ 5432
书旗小说app 365体育投注账号被冻结

书旗小说app

📅 09-14 👁️ 3879
【华硕ROG GTX 980】性能评测/参数/跑分Asus ROG Poseidon GeForce GTX 980 365体育投注账号被冻结

【华硕ROG GTX 980】性能评测/参数/跑分Asus ROG Poseidon GeForce GTX 980

📅 07-28 👁️ 291