【微信小程序】授权

2019-08-25  本文已影响0人  嘻洋洋

1.授权相关概念

(1)为什么要授权
部分接口需要经过用户授权同意才能调用。我们把这些接口按使用范围分成多个 scope ,用户选择对 scope 来进行授权,当授权给一个 scope 之后,其对应的所有接口都可以直接使用。
(2)直接使用这些接口时的问题

(3)常见需要授权的接口
wx.getUserInfo: 用户信息
wx.getLocation, wx.chooseLocation 地理位置
wx.userLocationBackground 后台定位【不会弹框,通过调用wx.opensetting,打开设置页】
wx.chooseAddress 通讯地址
wx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum 保存到相册
还有手机号
(4)授权相关注意事项

2. 授权方式总结

小程序调起授权弹框的方式主要三种:

2.1直接使用相关api时自动调起

例如调用wx.chooseAddress(),只要你之前没有授权或拒绝过(删除小程序授权关系记录就没有了),就会出现允许调用通讯地址授权窗口;

2.2提前授权申请

流程:获取所有授权状态----如果不存在---再调用授权接口---如果授权成功---调用最终API接口

// 可以通过 wx.getSetting 先查询一下用户是否授权了 "scope.record" 这个 scope
wx.getSetting({
  success(res) {
    if (!res.authSetting['scope.record']) {
      wx.authorize({
        scope: 'scope.record',
        success () {
          // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
          wx.startRecord()
        }
      })
    }
  }
})

2.3三是组件方式

例如使用button按钮,像获取用户数据,手机号等,让用户主动触发。

<button open-type="openSetting" bindopensetting="callback">打开设置页</button>
<button open-type="getUserInfo" bindgetuserinfo='getInfo'>获取用户信息</button>

要注意的重点:

3.授权的流程

总结完整的授权流程,以获取用户信息为例

<!-- 授权按钮-->
<button open-type="getUserInfo" wx:if="{{isShow}}" bindgetuserinfo="bindGetUserInfo"></button>
// 点击授权按钮,返回的信息
bindGetUserInfo: function(e) {
    console.log(e.detail.userInfo)
},
// 代码中调用接口获取用户信息
getUserInfo:function(){
    wx.getSetting({
        success: function(res) {
            // 隐藏授权 button
            ...
            // 查看是否授权
           if (res.authSetting['scope.userInfo']) {
              // 已经授权,可以直接调用 getUserInfo 获取用户信息
              wx.getUserInfo({
                 success: function(res) {
                     console.log(res)
                 },
                 fail: function(error) {
                     console.log(error
                 }
              });
            } else {
               wx.authorize({})或者跳转至授权页使用button的open-type进行授权
               ...
            }
        }
    });
}
上一篇 下一篇

猜你喜欢

热点阅读