全网整合营销服务商

营销型网站+SEO优化+关键词快排=一站式服务

免费咨询热线:15959292472

[上海seo优化公司哪家好]微信小程序实现登录功能的逻辑整理

  为了让大家更好的开发微信小程序,本文主要和大家分享微信小程序登录逻辑整理,希望能帮助到大家。

  注册/登录

  小程序端" style="margin■•●: 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 secret
js_code //wx.login登录时获取的 code,用于后续获取session_key
//下面两个参数用户服务器端签名校验用户信息的
signature 使用 sha1( rawData + sessionkey ) 得到字符串,[上海seo优化公司哪家好]用于校验用户信息。
rawData 不包括敏感信息的原始数据字符串,舞钢市小程序开发哪家好[赤峰seo公司要找久澳]app和微信小程序在安全方面有什么区别,用于计算签名。
//下面两个参数是用于解密获取openId和UnionId的
encryptedData 包括敏感数据在内的完整用户信息的加密数据
iv 加密算法的初始向量
当然,可以精简为以下三个参数▽◇. 
其余的签名校验的参数可省略•=◇,而appid和secret可以直接写在服务器.
js_code // wx.login登录时获取的 code…•,用于后续获取session_key
encryptedData 包括敏感数据在内的完整用户信息的加密数据
iv 加密算法的初始向量

 

  服务端处理逻辑

  相关的信息传输给服务器后,服务器

  1.先根据js_code去微信服务器拿到session_key
2▷▪.(此步可省略)使用 sha1( rawData + sessionkey )拿到字符串,判断与signature值是否相同,如果相同则用户信息无误◁□,可进行下一步.如果不同,则说明用户信息被篡改或过期.
3.然后根据解密算法自行解密(输入参数为appId,sessionKey,encryptedData=◁•,iv,返回一个jsonObj),拿到openId和unionId等信息,执行服务器端的注册/登录操作●◆★….
4.注册/登录操作逻辑完成后,将我们服务器的sessionId(或其他token),以及用户信息返回给客户端…★=.

  其中,服务器去获取session_key的请求为:

  (小写为固定写好的,大写为待替换的)
https•☆▪://api▽•.weixin◇▽.qq.com/sns/jscode2session=●•?appid=APPID&secret=SECRET&js_code=JSCODE&▪★◁▪;grant_type=authorization_code

  返回:

  

 //正常返回的JSON数据包
 {
 "openid"•=;▼▲▲: "OPENID"◁-▼●,
 "session_key"•◇;▲●○★: "SESSIONKEY"
 "expires_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();
}

 

  相关推荐:

  微信小程序获取用户信息如何实现

  微信小程序开发遇到的问题汇总

  一个微信小程序版知乎实例分享

  以上就是微信小程序实现登录功能的逻辑整理的详细内容,武汉市小程序制作公司更多请关注久澳传媒编程栏目其它相关文章!

[上海seo优化公司哪家好]微信小程序实现登录功能的逻辑整理

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。