获取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 | 编辑:洪哥 | 分类:小程序 | 浏览:



