微信小程序wx.getUserProfile

很多开发者在打开小程序时就通过组件方式唤起 getUserInfo 弹窗,如果用户点击拒绝,无法使用小程序,这种做法打断了用户正常使用小程序的流程,同时也不利于小程序获取新用户。详情可以点击官方调整链接微信官方链接
在这里插入图片描述
前提:

  • 开发者工具版本不低于 1.05.2103022
  • 基础库版本不低于 2.10.4
  • 基础库查看再微信开发工具的详情–>本地设置—>调用基础库
  • 本次使用2.15.0
    在这里插入图片描述
    使用:

公用一个登录注册接口:

import http from '../utils/http'

// 主页api 
export default { 
    registe: data => http.post('/user/login', data, { notAuth: true }),
}

1.传统的getUserInfo
html:

<button  open-type="getUserInfo"   lang="zh_CN" bindgetuserinfo="saoMiao">按钮</button>

js:

saoMiao(){
	let that =this
    let info = e.detail
    const res = await getApp().login(info);
}

app.js的login方法

  login(e){
    const token = wx.getStorageSync('token')
    if (token) return Promise.resolve(true)
    let info = e.userInfo
    return new Promise((resolve, reject) => {
      wx.login({
        success: async (d) => {
          info.code = d.code;
          const res = await api.registe(info);
          if (!res) {
            resolve(false)
            return wx.showToast({
              icon:'none',
              title: res?.resultMsg ?? '登录失败'
            })
          }
          wx.showToast({
            icon:'none',
            title: '登录成功'
          })
          wx.aldstat.sendOpenid(res.resultData.userInfo.openId)
          wx.setStorageSync("token", res.resultData.token)
          wx.setStorageSync("userInfo", res.resultData.userInfo)
          resolve(true)
        },
      })
    })
  },

2.新版本getUserProfile
html:

<button  bindtap="saoMiao">按钮</button>

js:

 	let that =this
    const res = await getApp().newlogin();
    if (!res) return;

app.js的newlogin方法

  newlogin(){
    const token = wx.getStorageSync('token')
    if (token) return Promise.resolve(true)
    return new Promise((resolve,rej)=>{
      wx.getUserProfile({
        desc: '业务需要',
        success:async res => {
          wx.login({
            success: async (re) => {
              if (re.code){
                res.userInfo.code=re.code
               const data= await (res.userInfo)
                wx.request({
                  url: config.apiBase+'/user/login?code='+re.code,
                  data: res.userInfo,
                  method:"POST",
                  success(resp){
                    if (!resp) {
                      resolve(false)
                      return wx.showToast({
                        icon:'none',
                        title: resp?.resultMsg ?? '登录失败'
                      })
                    }
                    wx.showToast({
                      icon:'none',
                      title: '登录成功'
                    })
                    console.log(resp)
                    wx.aldstat.sendOpenid(resp.data.resultData.userInfo.openId)
                    wx.setStorageSync("token", resp.data.resultData.token)
                    wx.setStorageSync("userInfo", resp.data.resultData.userInfo)
                    // resolve(resp)
                    resolve(true)
                  }
                })
              }
            }
          })
        },fail(res){
          console.log(res)
          if (res.errMsg=="getUserProfile:fail auth deny"){
            wx.showToast({
              icon:'none',
              title: '拒绝授权'
            })
          }
        }
      })
    })
  },
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值