在微信小程序开发中,经常需要获得用户的信息,如用户昵称、性别、地区等信息

    获取用户信息的流程是

    首先使用wx.getSetting查询用户当前的设置,是否获得用户授权,如果获得用户授权,再调用wx.getUserInfo获得用户信息

    wx.getSetting会返回一个Object,包含用户授权结果,代码如下所示。

    1. wx.getSetting({
    2. success(res) {
    3. console.log(res.authSetting)
    4. // res.authSetting = {
    5. // "scope.userInfo": true,
    6. // "scope.userLocation": true
    7. // }
    8. }
    9. })

    可以看到,wx.getSetting的success回调中得到了一个用户设置的对象,在这个对象中,res.authSetting就是用户的授权结果

    例如,想要知道是否已取得获取用户信息的授权,那么就是res.authSetting['scope.userInfo'],如果值为true,就是取得了获取用户信息的授权,如示例4-4所示。

    1. index.wxml
    2. --------------
    3. <view>
    4. <button
    5. wx:if="{{canIUse}}"
    6. open-type="getUserInfo"
    7. bindgetuserinfo="bindGetUserInfo"
    8. >
    9. 授权登录
    10. </button>
    11. </view>
    12. ================================================================
    13. index.js
    14. ---------------------
    15. Page({
    16. data: {
    17. canIUse: wx.canIUse('button.open-type.getUserInfo')
    18. },
    19. onLoad() {
    20. // 查看是否授权
    21. wx.getSetting({
    22. success(res) {
    23. if (res.authSetting['scope.userInfo']) {
    24. // 已经授权,可以直接调用 getUserInfo 获取头像昵称
    25. wx.getUserInfo({
    26. success(res) {
    27. console.log(res.userInfo)
    28. }
    29. })
    30. }
    31. }
    32. })
    33. },
    34. bindGetUserInfo(e) {
    35. console.log(e.detail.userInfo)
    36. }
    37. })

    示例4-4中,在onLoad生命周期函数里,首先通过wx.getSetting获取用户的设置,然后根据res.authSetting['scope.userInfo']判断是否获得了用户的授权,如果取得了授权,则使用wx.getUserInfo获取用户的信息