答题小程序 微信_微信小程序点餐怎么做_怎么做小程序_小程序模板源码下载_小程序小游戏
当前位置:建站首页 > 新闻资讯 > 员工天地 >

拉萨网站建设公司-java实现小程序登录态维护

发表日期:2021-04-25 22:30文章编辑:jianzhan浏览次数: 标签:    

--------

拉萨网站建设公司

-------

坚信很多喜爱开发设计的朋友都早已了解手机微信小程序是个甚么种群了,楼主也是从小程序内测期内就刚开始关心,而且也写过几个早已上线的手机微信小程序。可是基本上都是写的纯前端开发,近期楼主从关系后端开发到前端开发写一个详细的小程序新项目,正中间碰到了一些难题,楼主会找一些本人觉得有学习培训使用价值的点不确定时的拿出来跟大伙儿共享,期待对你有一些协助。

    本次就从最基本的手机微信小程序登陆态维护保养刚开始吧。小程序官方api文本文档里边有对登陆态的一个详细的解释,而且有有关的编码。想看 app secret,去调手机微信的插口

sns/jscode2session?appid=APPID secret=SECRET js_code=JSCODE grant_type=authorization_code 便可以得到以下主要参数:

openid 客户唯一标志 session_key 对话密匙 unionid 本字段在考虑一定标准的状况下才回到 在其中openid 就是会员的唯一性标识,此时服务端能够储存下来。 session_key 之后解密 unionId(全部对外开放服务平台会员的唯一性标志)时有效。

    服务端得到openid之后,以便后面的互动,要储存下来。一般来说有两种方法:一种是立即入数据信息库,一种是选用高效率高一点的缓存文件。楼主选用的是后者,方法是redis。

    依照手机微信的提议此时需要转化成一个不反复值做为openId的唯一性标志。这里选用的是java的uuid。随后把这个uuid值做为key,把openid和后边会用到的session_key做为value,存进redis。而且把uuid值回到给小程序。这样小程序便可以立即拿uuid值跟服务端互动。

    或许会有人问,假如有人得到uuid值实际上跟得到openid没甚么差别啊,都非常因而会员的唯一性标示。

    因此这里要对这个uuid值开展一个解决。最先存入redis时要有时效性性。session_key在手机微信服务器合理期是30天,提议服务端缓存文件session_key不超出30天。当小程序传过来的uuid值到期时,觉得这是到期的uuid,则再次走wx.login流程。

    以便便捷redis中不但会寸uuid与openid的对应关联。还会再存一条openid对应uuid的纪录,目地是以便下一次再次wx.login流程时依据openid找到之前老的uuid,假如存在的话就删掉,随后查寻一条新的uuid值,而且把openid对应的这条纪录也升级掉。这样redis服务器中就不会有过剩的脏数据信息,减轻服务器的压力。

    以上就是我了解的全部登陆态的全过程,自然也有wx.checkSession这些沒有讲到,实际上就是发现session_key无效是再再次走一遍上述的步骤便可以了。因此沒有细心说。不知道道我有木有讲清晰。我会把全部步骤的重要编码贴出来,供大伙儿参照。

@ActionKey( /loginByWeixin )

public void loginByWeixin() throws Exception {

( Start getSessionKey

String json = HttpKit.readData(getRequest());

JSONObject reqJson = JSON.parseObject(json);

String jsCode = reqJson.getString( code

if (jsCode == null || .equals(jsCode)) {

( 缺乏必要主要参数

renderJson(new OutRoot().setCode( 100 ).setMsg(SYS.PARAMETER_FAIL));

} else {

List record = appInfoService.selectAppInfo();

String appId = record.get(0).get( app_id

String appSecret = record.get(0).getStr( app_secret

if (appId == null || .equals(appId) || appSecret == null || .equals(appSecret)) {

( 缺乏必要主要参数

renderJson(new OutRoot().setCode( 100 ).setMsg(SYS.PARAMETER_FAIL));

} else {

String url = sns/jscode2session

String httpUrl = url + ?appid= + appId + secret= + appSecret + js_code= + jsCode

+ grant_type=authorization_code

String ret =


---------

拉萨网站建设公司

------------
相关新闻