微信小程序关闭关闭了getUserInfo的接口

折腾过微信小程序的都知道微信小程序是通过这个接口来获取用户的授权信息的,这个接口一旦关闭意味着没有授权框框,
就等于微信小程序的存在没有任何意义了,还好微信官网还是有良心的,线上版的小程序还是支持的,但是我们不能排除
哪一天线上版也不可以用了呢!

享巴巴

关闭接口以后的状态:

  • 当用户还没有在小程序上面授权的话,调用这个getUserInfo接口,会报错
  • 当用户已经在小程序上面授权了的话,可以用户这个接口获取用户信息,但是没有弹框了

但是作为折腾的过来人,我就分享受一下我的常见的做法,来解决这个问题

1 每个微信小程序都有一个 index.wxml文件,这个文件主要是小程序的模板界面代码,准备一个用于给用户授权的页面
,我这里直接用了一个全屏按钮,就在index.wxml中加上一段代码

 <view class='warp' hidden='{{eye}}'>
  <button open-type="getUserInfo" hover-class='none' bindgetuserinfo="getUserInfoFun">.</button> 
 </view>

2 然后打开index.wxss 这个文件,主要是设置设置按钮铺满屏幕,同时配置按钮背景图

 page {
    height: 100%;
}
button::after{
    border: none;
}
.warp button {
    width: 100%;
    height:100%;
    position: absolute;
    border-radius:0px 0px 0px 0px;
    color: transparent;
    background:transparent no-repeat center center;
    background-size: cover;   
    background-image: url("");
}

注意 background-image: url(""); url 需要使用网络地址图片,或者 base64数据图片 (目前版本微信这样限制)

3 最后一个文件肯定就是index.js文件啦,这个文件主要是用来控制逻辑的!

Page({
  data:{
    eye:true
  },
  onLoad:function(){
   
  },
  onShow: function (options){
    this.getUserInfoFun()
  },
  getUserInfoFun: function (){
    var S = this;
    wx.getUserInfo({
        success: function (res){
            console.log("userInfo:"+res)
       //do anything
        },
        fail: S.showPrePage
      })
  },
  showPrePage:function(){
      this.setData({
        eye:false
      })
  }
})

以上逻辑

未授权用户打开小程序

  setp1 显示授权预览页面 也就是index.wxml里的内容,

  step2 用户点击按钮,弹出微信的授权对话窗,

  step3-1 用户点击取消 -> 停留在当前页

  step3-2 用户点击授权 -> 获取信息成功 -> Do anything

注意:这些都是建立在一个完整没有bug的微信小程序上面,只是对微信官方关闭接口的一个对策,本人的做法
大神路过,勿喷!!!