南阳网站推广优化公司,个人可以做外贸的网站,wordpress站点美化,网站怎么进入后台管理为了让大家更好的开发微信小程序#xff0c;本文主要和大家分享微信小程序登录逻辑整理#xff0c;希望能帮助到大家。注册/登录小程序端 stylemargin: 0.8em 0px; padding: 0px; box-sizing: border-box; font-weight: 100; line-height: 1.3em; font-size: 2.1…为了让大家更好的开发微信小程序本文主要和大家分享微信小程序登录逻辑整理希望能帮助到大家。注册/登录小程序端 stylemargin: 0.8em 0px; padding: 0px; box-sizing: border-box; font-weight: 100; line-height: 1.3em; font-size: 2.13em;小程序端:通过上面wx.login和wx.getUserInfo两个api拿到相应的信息,并通过上方接口传给自己的服务器.需要传输的信息有7个参数:appid 小程序唯一标识secret 小程序的 app secretjs_code //wx.login登录时获取的 code,用于后续获取session_key//下面两个参数用户服务器端签名校验用户信息的signature 使用 sha1( rawData sessionkey ) 得到字符串用于校验用户信息。rawData 不包括敏感信息的原始数据字符串用于计算签名。//下面两个参数是用于解密获取openId和UnionId的encryptedData 包括敏感数据在内的完整用户信息的加密数据iv 加密算法的初始向量当然,可以精简为以下三个参数.其余的签名校验的参数可省略,而appid和secret可以直接写在服务器.js_code // wx.login登录时获取的 code,用于后续获取session_keyencryptedData 包括敏感数据在内的完整用户信息的加密数据iv 加密算法的初始向量服务端处理逻辑相关的信息传输给服务器后,服务器1.先根据js_code去微信服务器拿到session_key2.(此步可省略)使用 sha1( rawData sessionkey )拿到字符串,判断与signature值是否相同,如果相同则用户信息无误,可进行下一步.如果不同,则说明用户信息被篡改或过期.3.然后根据解密算法自行解密(输入参数为appId,sessionKey,encryptedData,iv,返回一个jsonObj),拿到openId和unionId等信息,执行服务器端的注册/登录操作.4.注册/登录操作逻辑完成后,将我们服务器的sessionId(或其他token),以及用户信息返回给客户端.其中,服务器去获取session_key的请求为:(小写为固定写好的,大写为待替换的)https://api.weixin.qq.com/sns/jscode2session?appidAPPIDsecretSECRETjs_codeJSCODEgrant_typeauthorization_code返回://正常返回的JSON数据包{openid: OPENID,session_key: SESSIONKEYexpires_in: 2592000}//错误时返回JSON数据包(示例为Code无效){errcode: 40029,errmsg: invalid code}相关解密算法:https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html注意:示例代码中有node,c,php,python的,没有java的.需要服务器返回的信息:sessionId/token 登录状态标识userInfo: jsonObject,用户在我们平台上的信息,其内容与getPersonalInfo接口返回的相同.最后,将登录操作封装成方法,需要处调用即可//最终供外面调用的方法function login(){console.log(logining..........);//调用登录接口wx.login({success: function (e) {console.log(wxlogin successd........);var code e.code;wx.getUserInfo({success: function (res) {console.log(wxgetUserInfo successd........);var encryptedData encodeURIComponent(res.encryptedData);thirdLogin(code,encryptedData,res.iv);//调用服务器api}})}});}function thirdLogin(code,encryptedData,iv){var url eeee/xxx/login/ttttt;var params new Object();params.code code;params.encryptedData encryptedData;params.iv iv;buildRequest(new Object(),url,params,{onPre: function(page){},onSuccess:function (data){console.log(my login successd........);console.log(data);getApp().globalData.session_id data.session_id;getApp().globalData.uid data.uid;getApp().globalData.isLogin true;},onError : function(msgCanShow,code,hiddenMsg){}}).send();}相关推荐