收藏
回答

获取手机号解密失败?

点击<button open-type="getPhoneNumber" bindgetphonenumber="Brushfacelogin">登录</button>一直在操作没啥问题,但是在当前页面停留太久(具体时间未知,有时个把小时,有时十几分钟)不操作后再次点击会出现手机号获取解密失败,不知道哪里出的问题

Page({
  data: {
  },
   onLoad: function (options) {
     this.loginCode()
   },
   //登录获取code换取sessionKey
   loginCode:function(){
     wx.login({
       success: function (res) {
         // 发送 res.code 到后台换取 openId, sessionKey, unionId
         let URL = app.globalData.domainName + '/_saas/_app/TKApp.app/service/jsonService.db/jscode2session.jssp?appid=' + AppId + '&secret=' + AppSecret + '&js_code=' + res.code + '&grant_type=authorization_code'
         //发起网络请求
         wx.request({
           url: URL,
           data:{
             appid:AppId,
             secret:AppSecret,
             js_code:res.code,
             grant_type:'authorization_code'
           },
           header: {  
             "Content-Type": "application/x-www-form-urlencoded"
           }, 
           method: 'GET', 
           success: function(response){
             app.globalData.openid = response.data.openid;
             app.globalData.session_key = response.data.session_key;
           },
           fail: function(res) {
             wx.showModal({
               title: '提示',
               content: JSON.stringify(res)
             })
           }
         });
       }
     })
   },
   //手机号解密
   phoneDecode:function(e){
     var session_key = app.globalData.session_key;
     wx.checkSession({
       success () {
         //session_key 未过期,并且在本生命周期一直有效
         var pc = new WXBizDataCrypt(AppId, session_key)
         var phoneValue = pc.decryptData(e.detail.encryptedData , e.detail.iv)
         app.globalData.phoneNumber = phoneValue.phoneNumber;
         wx.navigateTo({
           url: "/pages/Brushface/Brushface"
         })
       },
       fail () {
         // session_key 已经失效,需要重新执行登录流程
         this.loginCode()
         this.phoneDecode(e);
       }
     })
   },
  Brushfacelogin (e) {
     if(e.detail.encryptedData && e.detail.iv){
       this.phoneDecode(e);
     }
  }
})

以上是部分代码

回答关注问题邀请回答
收藏

2 个回答

登录 后发表内容
问题标签