
文档相关地址3360
用户登录以获得用户数据、签名验证、用户数据的加密和解密
通过上面的两个API wx . log in和wx.getUserInfo获取相应的信息,并通过上面的接口传输到自己的服务器。要传输的信息有七个参数3360。
appid小程序唯一标识秘密小程序的app secretjs_code //wx.login登录时获取的代码,用于后续获取session_key//用户的签名以下两个参数的服务器端签名验证用户信息使用sha1( rawData sessionkey)获取字符串,用于验证用户信息。原始数据不包括敏感信息的原始数据字符串,用于计算签名。//以下两个参数是加密数据iv加密算法的初始向量,用于解密openId和UnionId的加密数据,包括敏感数据。当然,它可以简化为以下三个参数。签名验证的其他参数可以省略,而appid和secret可以直接写在服务器上。
Js_code //wx.login是登录时获取的代码,用于获取session_keyencryptedData的加密数据,包括敏感数据。iv加密算法的初始向量为
。在相关信息被传输到服务器之后,服务器
1.首先去微信服务器根据js_code获取session_key2。(此步骤可省略)使用sha1( rawData sessionkey)获取字符串,判断是否与签名值相同。如果相同,则用户信息正确,然后继续下一步。如果不同,则表示用户信息已被篡改或过期。3.然后根据解密算法自己解密(输入参数为AppID、Sessionkey、加密数据、IV,并返回一个jsonObj),获取openId、unionId等信息,在服务器端进行注册/登录操作。4.注册/登录操作逻辑完成后,将我们服务器的sessionId(或其他令牌)和用户信息返回给客户端。
(固定用小写写)https://API . weixin . QQ . com/SNS/jscode 2 session要换成大写吗?appid=APPIDsecret=SECRETjs _ code=JSCODEgrant _ type=authorization _ code
返回:
//JSON数据包正常返回{'OpenID' :' OpenID ',' session _ key ' 3360 ' session key ' ' expires _ in ' 3360 2592000 }//出现错误时返回JSON数据包(例如,代码无效){'errcode': 40029,' errmsg': '无效代码' }
https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html
请注意,在:示例代码中有node、c、php、python,没有java。
session id/Token/Token登录状态标识userInfo: jsonObject,我们平台上用户的信息与getPersonalInfo接口返回的信息相同。
//方法function log in(){ console . log(' logging……'))最终用于外部呼叫;/var code=e . code;wx . GetUserInfo({ success : function(RES){ console . log(' WxGetUserInfo success . '));var encryptedData=encodeURIComponent(RES . encryptedData);thirdLogin(代码,encryptedData,RES . iv);//调用服务器API } })});}函数thirdLogin(代码,encryptedData,iv){ var URL=' eeee/XXX/log in/tttt ';var params=新对象();params.code=codeparams . encrypted data=encrypted data;params.iv=ivbuildRequest(新对象(),url,参数,{ onPre: function(页面){},onSuccess:function(数据){ console.log('我的登录成功. '));console.log(数据);getApp(). global data . session _ id=data . session _ id;getApp()。getApp(). global data . islogin=true;},onError :函数(msgCanShow,code,hiddenMsg){ } })。send();}