微信小程序的开发不止是为了给用户提供便利,同时也是为了获取用户信息,对用户资源进行整合,便于客户群体的二次开发。那么,在开发微信小程序的时候,怎么获取用户信息呢?其实,根据wx.getUserinfo()请求参数withCredentials的布尔值及用户的登陆状态,api会有不同的返回值。具体操作流程如下:
当withCredentials 为 true 且 用户登陆态未到期,返回的数据会包括 encryptedData,iv等敏感数据。
返回数据如下:
userinfo 不包含敏感数据的用户信息
rawData 不包含敏感数据的原始数据字符串,用于签名校验
signature。 使用sha1( rawData + sessionkey ) 得到的字符串,用于签名校验数据完整性
encryptedData 包含 openId,unionId 等用户敏感数据的加密数据
iv 加密算法的初始向量
当withCredentials 为 false 时,不要求登陆状态,返回数据不包含敏感数据,即不包含上文提到的 encryptedData 和 iv。
在此过程中需要使用session_key。开发者将 signature 和 rawData 发送到服务器,服务器通过相同的 sha1( rewData + sessionkey) 算法计算出 signature2,并与signature对比,校验数据完整性。