微信的小程序登录
微信小程序登录通常使用微信提供的登录能力,这样可以快速获取用户的基本信息,并实现用户的身份认证。以下是微信小程序登录的基本流程:
-
用户点击登录按钮:在小程序中,通常会有一个登录按钮,用户点击该按钮开始登录流程。
-
调用wx.login()接口:开发者通过调用微信提供的
wx.login()
接口,获取一个临时的登录凭证code。 -
发送code到服务器:将这个code发送到开发者自己的服务器,服务器需要有与微信对接的能力。
-
服务器端处理:服务器接收到code后,会使用这个code向微信服务器发起请求,调用微信的
auth.code2Session
接口,传入appid、secret(应用密钥)、js_code(即上一步获取的code)以及grant_type(授权类型,此处固定为authorization_code)。 -
获取session_key和openid:微信服务器返回给开发者服务器的响应中包含了session_key和用户的唯一标识openid。session_key是对用户数据进行加密签名的密钥,而openid是用户在该小程序中的唯一标识。
-
生成自定义登录态:开发者服务器可以根据session_key和openid生成一个自定义登录态,例如token,然后将这个自定义登录态返回给小程序。
-
小程序保存登录态:小程序端接收到自定义登录态后,可以将其保存在本地,以便后续请求时携带此登录态,证明用户已经登录。
-
后续请求携带登录态:在之后的API请求中,小程序需要在请求头或请求参数中携带这个自定义登录态,服务器端验证登录态有效后,即可认为用户已登录。
整个流程涉及到前端小程序、开发者服务器和微信服务器三方的交互。需要注意的是,为了保证安全性,session_key不应该在网络传输中明文传递,也不应该存储在前端,而是应该由开发者服务器来管理和验证。