微信公开课
如何看待微信公开课小程序热门讨论「小程序获取openid问题,那位同僚有遇到过的,帮忙解答一下」
摘要:小程序获取openid问题,那位同僚有遇到过的,帮忙解答一下
展开:///WxApi.jsstaticgetOpenid(){varselfthis;returnnewPromise((resolve,reject){self.login().then(function(code){varappidCONF.WX.APPID;varsecretCONF.WX.SECRET;varurlhttps://mydomain/getopenid?code+code;//发起网络请求wx.request({url:url,success:function(res){if(res.data.success){resolve(res.data.data);}else{reject(res.data.err);}},fail:function(err){reject(err);}})},function(error){reject(error);});});}///Storage.jsstaticgetOpenId(){returnwx.getStorageSync(CONST_CONF.OPENID);}staticsetOpenid(openid){wx.setStorageSync(CONST_CONF.OPENID,openid);}///apppage///尝试在App启动的时候获取一次openid存储到localStoragevarWxApirequire(./service/wxapi);varStoragerequire(./service/storage);App({onLaunch:function(){console.log(AppLaunch);//////这里好像工作不正确//////////this.setOpenid();},onShow:function(){console.log(AppShow)},onHide:function(){console.log(AppHide)},globalData:{hasLogin:false},setOpenid:function(){WxApi.getOpenid().then(function(data){Storage.setOpenid(data.openid);});},})///loginpage///先检查localStorage是否已经缓存过openid,如果有就直接保存到data里面///如果没有再去获取一次Page({/页面的初始数据/data:{openid:},/生命周期函数监听页面加载/onLoad:function(options){varselfthis;//////这里好像工作不正确//////////varopenidStorage.getOpenId();if(openid){self.setData({openid:openid});}else{self.getOpenid();}},/获取openid/getOpenid:function(){varselfthis;WxApi.getOpenid().then(function(data){self.setData({openid:data.openid});});}}实现思路:首先,获取openid是放到服务端去获取的,小程序端提交code到服务端,见WxApi.jsgetOpenid方法1.app启动的时候尝试获取一次,保存到localStorage2.登录的时候从localStorage获取,如果能拿到就跳过,不能拿到就尝试获取一次,保存到当前页面的data里面。问题:场景一、开发环境,第一次进去,然后登录,拿不到openid。退出重新登录,可以拿到openid。场景二、生产环境,重复上面的操作多次,依然无法拿到openid。了解更多
方法1:微信扫描微信公开课小程序码即可订阅热门讨论「小程序获取openid问题,那位同僚有遇到过的,帮忙解答一下」
方法2:微信搜索微信公开课小程序名称进入,即可订阅热门讨论「小程序获取openid问题,那位同僚有遇到过的,帮忙解答一下」
方法3:微信网页访问即速商店,长按识别微信公开课小程序码即可订阅热门讨论「小程序获取openid问题,那位同僚有遇到过的,帮忙解答一下」
微信公开课小程序热门讨论「小程序获取openid问题,那位同僚有遇到过的,帮忙解答一下」由微信公开课原创摘录于微信小程序商店shop.jisuapp.cn,转载请注明出处。
微信公开课热门讨论「小程序获取openid问题,那位同僚有遇到过的,帮忙解答一下」由微信公开课开发者向微信用户提供,并对本服务内容、数据资料及其运营行为等真实性、合法性及有效性承担全部责任。