您当前的位置: 首页 > 知识百科 > 微信小程序逻辑判断和整理

微信小程序逻辑判断和整理

时间:2023-07-01 14:05 阅读数:101 人阅读 分类:知识百科

  微信小程序逻辑判断的开发需要准确的教程和相应的小程序码,接下来小编会为大家详细讲解一下微信小程序逻辑判断和整理要怎么操作,一起来看看吧。

  


  微信两个小程序api所拿到的信息:login和getUserInfo

  


  注册小程序/登录

  小程序端:

  通过上面wx.login和wx.getUserInfo两个api拿到相应的信息,并通过上方接口传给自己的服务器.

  需要传输的信息有7个参数:

  appid 小程序唯一标识

  secret 小程序的 app secret

  js_code //wx.login登录时获取的 code,用于后续获取session_key

  //下面两个参数用户服务器端签名校验用户信息的

  signature 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息。

  rawData 不包括敏感信息的原始数据字符串,用于计算签名。

  //下面两个参数是用于解密获取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的请求为:

  (小写为固定写好的,大写为待替换的)

  api.weixin.qq/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"

  }

  相关解密算法:

  mp.weixin.qq/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();

  }

  微信小程序逻辑判断怎么操作,大家学会了吗?更多的教程和小程序代码大家可以在微信小程序商店进行搜索并获取,希望能够帮助到大家。

  

  关于java的逻辑小程序编写教程

  微信小程序判断字符串怎么弄

  微信小程序封装组件怎么使用?