微信小程序之授权 wx.authorize

一、 wx.authorize(Object object)

提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。

  • 用户可以授权的
    scope 包括:
scope对应接口描述
scope.userInfowx.getUserInfo用户信息
scope.userLocationwx.getLocation, wx.chooseLocation, wx.openLocation地理位置
scope.addresswx.chooseAddress通讯地址
scope.invoiceTitlewx.chooseInvoiceTitle发票抬头
scope.invoicewx.chooseInvoice获取发票
scope.werunwx.getWeRunData微信运动步数
scope.recordwx.startRecord录音功能
scope.writePhotosAlbumwx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum保存到相册
scope.camera 组件摄像头

注意:上述接口中,wx.authorize({scope: "scope.userInfo"}),无法弹出授权窗口,使用 button 组件,并将 open-type 指定为 getUserInfo 类型,获取用户基本信息。https://developers.weixin.qq.com/community/develop/doc/0000a26e1aca6012e896a517556c01

二、 wx.authorize 用法

wx.getSetting({
  success (res) {
    console.log(res.authSetting)
  }
})

如果用户已经授权过 地理位置,上面代码则会返回:"scope.userInfo": true

  • 向用户发起授权请求
// 可以通过 wx.getSetting 先查询一下用户是否授权了 "scope.record" 这个 scope

wx.getSetting({
  success(res) {
    if (!res.authSetting['scope.record']) {
      wx.authorize({
        scope: 'scope.record',
        success () {
          // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
          wx.startRecord()
        }
      })
    }
  }
})

三、 注意

  • 微信中使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持。
  • 所以在用户未授权的情况下,在 onload 函数中使用 wx.getUserInfo 是默认失败的, 如下:
onLoad: function (options) { 
    // 只有在用户已经授权后,才能在 onload 函数中获取到用户信息
    // 所以,下面通过 wx.getSetting 检查用户是否已经授权,
    // 如果没有授权,则停止执行
    // 如果已经授权,则继续执行success 
    wx.getSetting({
      success (res){
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称
          wx.getUserInfo({
            success: function(res) { 
              console.log(res.userInfo)
            }
          })
        }
      }
    })
}, 
  • 建议使用 button 组件,并将 open-type 指定为 getUserInfo 类型,通过点击事件获取用户基本信息。

  • 代码如下:

wxml:

 <button open-type="getUserInfo" bindgetuserinfo='getUser'>获取用户信息(授权登录)</button>

js:

getUser(e) { 
    console.log(e)
    wx.getUserInfo({
        success: (res) => {
            console.log(res)
            this.setData({
                userInfo: res.userInfo
            });
        }
    })
}

转载于:https://www.cnblogs.com/cckui/p/10000738.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值