微信授权获取用户信息及open-data

时间:2025-01-22 11:37:26

在新版本的微信小程序中,使用()这个方法时,如果用户已授权,则能获取到用户信息,如果用户没有授权,则也不出现弹窗,直接进入fail方法中,

解决办

button

<button open-type="getUserInfo" bindgetuserinfo="selfGetInfo" 
      class="avatarImg"
点击授权
</button>
selfGetInfo (e){
  //出现授权弹窗,用户点了允许
   if(){
        = ;
       ({
         avatarUrl: 
       })
     }else{
       //用户点了拒绝 ,则这个方法,不会出现弹窗,直接进入fail的回调中
          ();
        }
}  ,
 selfModal:function(){
    ({
      title:'提示',
      content:'请接受授权,否则会影响你的使用效果',
      showCancel:false,//不显示取消按钮
      success:res=>{
        if(){
          ('用户点击了确定')
        }else if(){
          ('用户点击取消')
        }
      }
    })
  },

open-data这个新的组件

<open-data type="userNickName"></open-data>//用户头像
<open-data type="userAvatarUrl"></open-data>//用户昵称

授权的步骤

1.在中,的onLaunch中首先判断用户授权了那些信息

/先判断用户已经授权了那些信息
    ({
       success:res=>{
         if (['']){
                //说明用户信息已经授权,可直接调用获取,
               ({
                  success:res=>{
                    (res)
                    =;
                    // 由于 getUserInfo 是网络请求,可能会在  之后才返回
                    // 所以此处加入 callback 以防止这种情况
                    if () {
                      (res)
                    }
                  }
                })
         }
       }
    })

2.在需要展示授权信息的页面中,

//公共变量中用户信息是否存在
  if(){
    ({
      avatarUrl: 
    })
  }else(('')){
     = res => {
      ({
        userInfo: ,
        hasUserInfo: true
      })
    }
  

判断小程序的API,回调,参数,组件等是否在当前版本可用。

参数  string schema

使用 ${API}.${method}.${param}.${options} 或者 ${component}.${attribute}.${option} 方式来调用

返回值    boolean

参数说明

  • ${API} 代表 API 名字
  • ${method} 代表调用方式,有效值为return, success, object, callback
  • ${param} 代表参数或者返回值
  • ${options} 代表参数的可选值
  • ${component} 代表组件名字
  • ${attribute} 代表组件属性
  • ${option} 代表组件属性的可选值