wx.getUserProfile 不出现弹窗

这篇具有很好参考价值的文章主要介绍了wx.getUserProfile 不出现弹窗。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

使用wx.getUserProfile 获取用户信息,但是不出现弹窗就直接获取到了用户信息,且返回灰色头像,和“微信用户”昵称

原因

原来这个接口在22年5月的时候被回收了,低版本调试库才会正常显示,高版本则会返回灰色头像和默认的“微信用户”昵称

解决

我的解决方法是手动加一个权限弹窗文章来源地址https://www.toymoban.com/news/detail-507890.html

wx.getUserProfile 不出现弹窗

授权弹窗

async signupAndLogin() {            //bindtap事件
    wx.showModal({                     //手动授权弹窗
      title: '授权登录提示',
      content: '是否允许授权?',
      showCancel: true,
      confirmText: '允许',
      confirmColor: '#669F76',
      cancelColor: '#CC463D',
      success: async res => {
        if (res.confirm) {     //用户确认
          const { userInfo: { nickName, avatarUrl } } = await
            wx.getUserProfile({    //获取用户信息,最新版本已不支持弹窗
              desc: '用户授权',
            })

          let { result } = await wx.cloud.callFunction({  // 调用云函数
            name: 'loginOrSignup',
            data: {
              nickName,
              avatarUrl
            }
          })
          this.setData({ userInfo: result })
          getApp().globalData.userStatus = true   //用于检查用户是否登录的全局变量
        } else if (res.cancel) {     //用户取消
          wx.showToast({
            title: '取消授权',
            mask: true,
            icon: 'error'
          })
        }
      }
    })
  },

loginOrSignup云函数

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
  const { OPENID } = cloud.getWXContext()
  const { nickName, avatarUrl } = event
  const user_clct = db.collection('user')

  const { data } = await user_clct.where({    //查询用户是否存在
    _openId: OPENID
  }).get()

  if (data.length === 0) {                     //如果用户不存在,添加用户
    let user = await user_clct.add({
      data: {
        nickName,
        avatarUrl,
        _openId: OPENID
      }
    })
    return {
      nickName,
      avatarUrl,
      _openId: OPENID
    }
  } else {
    return data[0]       //如果用户存在,返回该用户信息
  }
}

选择头像

wx.getUserProfile 不出现弹窗
<button class="chooseAvatar" open-type="chooseAvatar" bindchooseavatar="chooseAvatar" plain="ture" style="width: 160rpx; border: none;color: #6e6e6e;">
<image class="userAvatar" src="{{userInfo.avatarUrl}}"></image>
</button>
主要是open-type属性,chooseAvatar是固定参数之一,用于拉起选择头像菜单
async chooseAvatar(e: any) {                //用户更换头像
    //e.detail 已经是 avatarUrl:"..."的格式
    let { avatarUrl } = e.detail

    wx.cloud.callFunction({
      name: 'uploadAvatar',
      data: {
        avatarUrl
      },
      success: async res => {
        let { result } = await wx.cloud.callFunction({  // 调用登录云函数,不传参,用以更新页面中的用户信息
          name: 'loginOrSignup',
        })
        this.setData({ userInfo: result })
      }
    })
  },

uploadAvatar,更新头像

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
  const { OPENID } = cloud.getWXContext()
  const { avatarUrl } = event
  try {
    db.collection('user').where({
      _openId: OPENID
    }).update({
      data: {
        avatarUrl
      },
      success:res=>{
        return avatarUrl
      }
    })
  } catch (err) {
    return err
  }
}

到了这里,关于wx.getUserProfile 不出现弹窗的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app开发微信小程序,wx.getPrivacySetting,wx.openPrivacyContract,wx.onNeedPrivacyAuthorization,隐私弹窗使用具体代码

     弹窗 代码插件已集成,即插即用, 五分钟集成进项目, 免费下载 ,欢迎大家交流  微信小程序用户隐私保护协议弹窗插件下载 首先完成组件的界面,创建一个组件文件夹 component ,然后创建一个 privacy 子文件夹,再创建一个 privacy 组件,组件是一个 全屏蒙版 加居中弹窗,弹窗

    2024年02月09日
    浏览(45)
  • 针对小程序wx.getUserProfile接口将被收回后做出的授权调整

    小程序文档中提出的调整说明 调整说明: 自 2022 年 10 月 25 日 24 时后(以下统称 “生效期” ),用户头像昵称获取规则将进行如下调整: 自生效期起,小程序 wx.getUserProfile 接口将被收回:生效期后发布的小程序新版本,通过 wx.getUserProfile 接口获取用户头像将统一返回默认

    2024年02月09日
    浏览(29)
  • wx.getUserProfile is not a function微信小程序报错

    在使用小程序wx.getUserProfile接口调用时报错:wx.getUserProfile is not a function  解决办法: 在微信开发者工具上打开详情,对调试基础库进行升级  OK了!

    2024年02月07日
    浏览(26)
  • 微信小程序授权登录wx.getUserProfile获取不到昵称及头像解决方案

    半年前做的个小程序,更新了二个文字,重新上传审核通过,悲剧了,新用户的昵称全部变为微信用户,头像全部变为默认头像,查了半天代码没找到原因,相当头大,搜了一下文档,尴尬了,11月9号新更新的规则,不再返回昵称和头像值....需要用头像昵称获取能力去触发获

    2024年02月11日
    浏览(31)
  • 解决小程序wx.getUserProfile接口回收,wxfile://tmp临时文件转base64传回后台

    可以弄一个个人信息,让用户设置自己的头像跟昵称 设置一个按钮让用户点击后可以直接获取到用户的头像,或者选择图片库上的图片去上传。  注意:buttom上需要添加上open-type=\\\"chooseAvatar\\\"字段 @chooseavatar=\\\"onChooseAvatar\\\"事件  通过按钮获取出来的url地址在开发者工具上的是h

    2024年02月12日
    浏览(33)
  • 微信wx.getUserProfile接口不弹出授权框都返回微信用户和灰色头像问题和解决方案

    今天突然发现用的好好的小程序,微信授权登录的时候没有弹出授权框,直接静默登录了,而且获取到的昵称都是 微信用户 这几个字,头像都是灰色的。已经明确使用的是新的wx.getUserProfile接口,不是之前废弃的wx.getUserInfo接口。 首先第一反应弄不好官方又调整了,查询下文

    2024年02月11日
    浏览(84)
  • 微信小程序中使用wx.navigateTo跳转时页面出现空白

    在微信小程序中当触发点击事件后跳转的页面时,跳转的页面出现空白,控制台报Page \\\"pages/outline-xi/outline-xi\\\" has not been registered yet.可能是因为使用了tabbar时导致的app.json没有使页面初始化,需要把不是tabbar的页面调在前面就能解决问题。  

    2024年02月16日
    浏览(32)
  • 【微信小程序】wx.requestSubscribeMessage无法唤起小程序订阅弹窗

    报错信息: requestSubscribeMessage:fail can only be invoked by user TAP gesture. 报错原因:在某个场景的方法里面调用而不是直接通过用户点击 解决方法:一般可做成显示一个弹框友好的提示用户,然后再让用户点击按钮去手动触发订阅

    2024年02月12日
    浏览(33)
  • 安卓弹窗(Dialog)设置透明背景

    首先先声明应用场景:弹窗样式的要求设置成圆角如 该弹窗的样式就是圆角,但是我做出来的样子是这样的 等等,我明明没有给他设置背景为什么圆角外面会有一个黑色的尖尖角?如果想要做向上滑动使弹窗消失的话拖动弹窗时更明显,效果如下 这样看的话黑色背景就全都

    2024年02月16日
    浏览(26)
  • 小程序 解决自定义弹窗滚动穿透问题,解决弹窗背景内容滚动问题

    方法一、catchtouchmove=\\\"true\\\", 可以实现弹框背景不滚动,但是也会导致弹框自身无法滚动,如果你的弹窗本身是不需要滚动的,用这个方法是极佳的。 view class=\\\"pop\\\" catchtouchmove=\\\"true\\\"     view class=\\\"content\\\"/view /view 方法二、固定定位(可以解决背景不要滚动,弹框能滚动的问题)

    2024年02月03日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包