前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序版博客——授权登录的修改(wx.getUserInfo)

微信小程序版博客——授权登录的修改(wx.getUserInfo)

作者头像
Bug生活2048
发布2018-08-31 16:04:03
1.6K0
发布2018-08-31 16:04:03
举报
文章被收录于专栏:Bug生活2048Bug生活2048

最近一直忙着项目没有时间打理我的小程序,有网友反馈wx.getUserInfo官方文档中做了一些调整,今天有空看了下文档,果然变了,所以抽时间优化了下代码

思路

之前的授权登录优化这里看下原来的这篇文章,主要是在需要的时候才弹出用户授权,同时通过wx.openSetting来实现用户拒绝后的二次授权,因为授权获取用户基本信息一旦拒绝之后小程序就不会再出现授权窗口。

但现在wx.getUserInfo该接口将不再出现授权弹窗,需要嵌套在button中让用户主动点击授权。

这样原本定义的方法就完全没用了:

代码语言:javascript
复制
getUserInfo: function (loginType, cb) {
    var that = this
    if (this.globalData.userInfo) {
      typeof cb == "function" && cb(this.globalData.userInfo, true);
} 

    ......

那只好换个思路啦,当点击需要授权的页面时,我们首先验证全局变量globalData.userInfo是否有值,如果没有,那我们直接跳转到授权页面(authorization),引导用户授权登录,登录成功后再跳转回需要访问的页面。

具体实现

首先需要建个授权登录页面,页面其实很简单,一段引导语和一个授权按钮,但设计下来发现太单调了,于是找了个gif动图,200多kb有点大[泪崩],为了好看就只能牺牲下了。

另外,如果用户不想授权,那此页面没有可操作按钮了,只能退出,这不太友好,所以又加了个返回首页的按钮,整体样式效果如下:

截图1

同时如果用户点击授权登录后依旧拒绝,在顶部给到一些小提示:

截图2

这个的话基本上的交互就有了,来看看具体代码:

代码语言:javascript
复制
//wxml:利用canIUse变量去兼容低版本

<view wx:if="{{canIUse}}">
  <view class='zan-font-14 zan-c-gray-dark' style='text-align:center;margin-top:50rpx'>
    允许微信授权后,可体验更多功能</view>
  <view class="zan-btns">
    <button open-type='getUserInfo' bindgetuserinfo="bindGetUserInfo" class="zan-btn zan-btn--primary">授权登录</button>
    <button bindtap='navigateBack' class="zan-btn">返回首页</button>
  </view>
</view>

<view wx:else class='zan-font-16 zan-c-red' style='text-align:center;margin-top:50rpx'>
  您的微信版本过低,请升级后再次体验</view>

//js核心代码:其中利用backtype来确认授权登录后跳转回那个页面
bindGetUserInfo: function(e) {
    let backtype = this.data.backType;
    if (e.detail.userInfo) {
      app.globalData.userInfo = e.detail.userInfo
      if (backtype =='index') {
        wx.switchTab({
          url: '../index/index'
        })
      } else if (backtype == 'mine') {
        wx.switchTab({
          url: '../mine/mine'
        })
      } else {
        wx.redirectTo({
          url: '../detail/detail?blogId=' + backtype
        })
      }
    } else {
      this.showZanTopTips('很遗憾,您拒绝了微信授权,宝宝很伤心');
    }
  },

这里注意下,如果跳转的是微信菜单页,记得要用wx.switchTab,详细的可以再看看官方文档,几个跳转的方法去体会下。

这样的话,在需要微信授权的页面去验证下,如果没有登录就可以直接跳转到该页面啦。

代码语言:javascript
复制
//比如用户中心的页面
onLoad: function () {
    let that = this;
    if (!app.globalData.userInfo) {
      wx.redirectTo({
        url: '../authorization/authorization?backType=mine'
      })
    }

    that.setData({
      userInfo: app.globalData.userInfo
    });
  }

其他

由于时间有限,有些代码处理的不是很好,这个大家主要体会下思路和主要方法,时间充裕的情况下还是要注意下自己的编码习惯。

另外就是有个小问题,在页面跳转时总有点小瑕疵,比如我第一次登录,在点击我的菜单Tab时,小程序会首先渲染用户中心这个页面,然后发现没有授权,直接一闪而过又跳到授权登录页面,这个不懂有什么方式可以优化的,如果有改善建议还望指教。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Bug生活2048 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 思路
  • 具体实现
  • 其他
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档