微信小程序授权登录流程以及使用到的API
微信小程序的授权登录流程是一个涉及前端小程序与后端服务器以及微信服务器之间交互的过程。以下是该流程及其使用的API的详细说明:
微信小程序授权登录流程
- 用户触发登录:
- 用户在小程序内点击登录按钮或进行需要登录才能访问的操作时,触发登录流程。
- 小程序调用
wx.login()
:- 小程序前端调用
wx.login()
API 获取临时登录凭证(code)。这个code是后续获取用户唯一标识openid和会话密钥session_key的关键。
- 小程序前端调用
- 将code发送到后端服务器:
- 小程序将获取到的code发送到开发者自己的后端服务器。
- 后端服务器调用微信API换取openid和session_key:
- 后端服务器使用接收到的code,结合自己的
AppID
和AppSecret
,向微信服务器发送请求(通常是通过调用https://api.weixin.qq.com/sns/jscode2session
接口)。 - 微信服务器验证通过后,返回给后端服务器用户的openid和session_key。
- 后端服务器使用接收到的code,结合自己的
- 生成自定义登录态:
- 后端服务器根据openid等信息生成自定义登录态(如token),用于后续业务逻辑中前后端交互时识别用户身份。
- 将自定义登录态返回给前端小程序:
- 后端服务器将生成的自定义登录态返回给前端小程序。
- 前端小程序保存自定义登录态:
- 前端小程序接收到自定义登录态后,将其保存到本地(如使用
wx.setStorageSync()
API),并在后续请求中携带这个登录态。
- 前端小程序接收到自定义登录态后,将其保存到本地(如使用
使用到的API
- 前端小程序:
wx.login()
:获取用户的登录凭证(code)。wx.setStorageSync()
/wx.getStorageSync()
:用于在本地缓存中保存和读取自定义登录态。wx.getUserInfo()
(注意:此API在新版微信中可能需要用户授权,且获取到的用户信息可能不包含敏感信息,如手机号等):用于获取用户信息,但可能需要用户确认。wx.requestPayment()
(虽然不直接用于登录,但常用于支付流程,与登录流程同属于小程序常用API):用于发起支付请求。
- 后端服务器:
- 通常使用HTTP请求库(如Node.js的axios、request等)向微信服务器发送请求,调用
https://api.weixin.qq.com/sns/jscode2session
接口换取openid和session_key。
- 通常使用HTTP请求库(如Node.js的axios、request等)向微信服务器发送请求,调用
注意事项
- 用户体验:授权登录的过程需要尽可能简洁明了,避免给用户带来过多的操作步骤和等待时间。
- 数据安全:为了保障用户信息安全,授权登录过程中需要使用HTTPS协议进行数据传输,同时对获取到的用户信息进行适当的加密处理。
- 适配不同设备:考虑到不同设备可能存在的差异,开发者需要在实现授权登录功能时进行充分的测试和调试,确保在不同设备上的兼容性。
- 与后端服务器配合:授权登录过程中需要与后端服务器进行通信,因此需要确保前后端服务器之间的接口协议和数据格式定义清晰明确,避免出现错误。
- 处理异常情况:在授权登录过程中,难免会遇到各种异常情况,如网络连接失败、服务器故障等,需要提前做好异常处理机制。