手机版

微信小程序登录步骤流程(C#)

时间:2021-12-19 来源:互联网 编辑:宝哥软件园 浏览:

小程序的官方文件说:

调用wx.login接口获取登录凭据(代码),然后交换用户登录状态信息,包括用户的唯一标识符(openid)和本次登录的会话密钥(session_key)。通过调用wx.getUserInfo接口返回的数据将包含encryptedData、iv等敏感信息。用户数据的加密和解密通信依赖于会话密钥。

UnionID机制描述:

如果开发者有多个移动应用、网站应用和公共账号(包括小程序),可以通过unionid来区分用户的唯一性,因为只要是同一微信开放平台账号下的移动应用、网站应用和公共账号(包括小程序),用户的unionid就是唯一的。换句话说,同一个微信开放平台下,同一个用户对不同的应用拥有相同的unionid。

小程序登录的主要功能是获取用户信息。主要使用两种API。一种是wx.login获取用户的jscode,然后服务器使用jscode获取用户的openid和session_key。Openid是小程序公共平台中用户的唯一标识符。注意是在小程序的公共平台,而不是在所有的公共平台,也就是说如果是在服务号或者订阅号的公共平台,可能会有和这个用户有相同openid的用户。如果你想要一个用户在微信所有公共平台的唯一标识,只能使用unionid。Session_key是用户的密钥,用于解密用户的敏感数据。另一个wx.getuserInfo是获取用户的加密敏感数据和偏移量iv,偏移量加上之前的session_key就可以解密用户的敏感数据。

提供官方登录流程图:

微信小程序登录步骤流程(C#)(图1)

以下是主要步骤流程:

调用客户端wx.login获取代码。客户端调用wx.request将代码传输到服务器后台。服务器后台根据代码appid appsecret向微信后台发送获取openid session_key的请求。服务器后台随机生成一个随机数3rd_session(由硬盘或设置或日期rand的随机函数生成),以3rd_session为密钥,openid session_key为Value,发送3rd_session给客户端。3rd_session的作用只是验证用户登录的时间限制是否已经过期,这不是必须的。如果不需要验证登录是否已过期,可以在没有3rd_session客户端的情况下获取3rd_session并存储在存储客户端中。在调用wx.getUserInfo获取用户敏感数据encryptedData和偏移向量IV后,客户端调用wx.request请求将encryptedData偏移向量iv 3rd_session传输到服务器后台服务器。根据第三个会话,工作站在缓存中找到会话密钥。session_key服务器的后台根据session_key iv (AES解密三个参数:加密数据、key session _ key、偏移向量iv)对加密数据进行解密。分步流程组合的详细流程图:

微信小程序登录步骤流程(C#)(图2)

小程序客户端发起的呼叫:

版权声明:微信小程序登录步骤流程(C#)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。