获取session_key需要两步,一步是wx.login(),它会返回一个code。第二调用服务端的code2session接口,把第一步的code传入,则可以获得session_key、openid,甚至特殊情况下还能获取到unionId(如果关注了关联开放平台的公众号)。这个获取的过程是有点繁琐的,所以,把session_key获取回来放那里备用是正确的做法。
我们小程序常常会用到会员模块,而我们最常用的做法是通过openid来关联会员,这样就可以做到所谓的“微信自动登录”了。如上面所说,在获取openid时,其实需要和获取session_key一样的操作。所以说,与其一上来只获取openid,不如把openid和session_key一起获取了。一步操作,两份收获,何乐不为?!
session_key获取到了之后,就一直有效,一直可以用吗?不是的。微信小程序官方称,session_key是有一定的超时时间的,但具体多久,官方并没有公布。但官方提供了一下检测session_key是否能用的方法,即wx.checkSession()。在它的success回调中写入session_key尚能用的逻辑,在fail回调中写session_key已经超时的处理逻辑即可。
下面是封装好了的一个checkSession的Promise,它将获取回来的session_key、openid、unionId放到Storage存储中。
/** * 验证小程序session_key的Promise封装 */ , checkSession: function(){ return new Promise(function (resolve, reject) { //去登录 var wxlogin = function(){ wx.login({ success: function (res) { wxcode2session(res) } }) } //获取session var wxcode2session = function(res){ var data = { action: 'wxcode2session', code: res.code } wd.mina.request(data).then(res=>{ console.log('wxcode2session return:'); console.log(res.data); if( res.data.session_key != undefined ){ try { console.log('checkSession():'); console.log(res.data); wx.setStorageSync('session_key', res.data.session_key) wx.setStorageSync('openid', res.data.openid) wx.setStorageSync('unionid', res.data.unionid) resolve() } catch (e) { reject('设置session失败') } }else{ reject('获取session失败') } }) } //检查是否存放了session_key try { var session_key = wx.getStorageSync('session_key') if (!session_key) { console.log('checkSession login-1'); wxlogin() }else{ //检查session是否过期 wx.checkSession({ success () { resolve() }, fail () { console.log('checkSession login-3'); wxlogin() } }) } } catch (e) { console.log('checkSession login-2'); wxlogin() } })//eof-promise }
有了这个函数之后,我们可以在app.js中去调用它,用它返回的信息去做其它的业务处理。
好了,关于微信小程序加载时先获取session_key登录状态,本文就介绍这么多,希望对大家有所帮助!
要饭二维码
洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!

文章的版权
本文属于“洪哥笔记”原创文章,转载请注明来源地址:微信小程序加载时先获取session_key登录状态:http://www.splaybow.com/post/weixin-mini-app-session-key-127.html
如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D!
发布时间:2020/7/27 7:17:41 | 编辑:洪哥 | 分类:小程序 | 浏览: