errMsg: “getUserProfile:fail can only be invoked by user TAP gesture.(微信小程序报错)

这篇具有很好参考价值的文章主要介绍了errMsg: “getUserProfile:fail can only be invoked by user TAP gesture.(微信小程序报错)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

无法获取用户信息:

 解决方法:

无法渲染头像:

解决办法:


无法获取用户信息:

  • {errMsg: "getUserProfile:fail can only be invoked by user TAP gesture."}

errMsg: "getUserProfile:fail can only be invoked by user TAP gesture."

constructor: (...)

hasOwnProperty: (...)

isPrototypeOf: (...)

propertyIsEnumerable: (...)

toLocaleString: (...)

toString: (...)

valueOf: (...)

__defineGetter__: (...)

__defineSetter__: (...)

__lookupGetter__: (...)

__lookupSetter__: (...)

__proto__: Object

errMsg: “getUserProfile:fail can only be invoked by user TAP gesture.(微信小程序报错)

 解决效果示例:

errMsg: “getUserProfile:fail can only be invoked by user TAP gesture.(微信小程序报错)​​​​​​​ 

 报错代码:

<!--pages/index/index.wxml-->

<view class="container">

<image src="{{userInfo.avatarUrl}}" class="avatarUrl"></image>

<button open-type="getUserInfo" size="mini " type="primary" bindgetuserinfo="getInfo">点击获取用户信息</button>

  <text>hello {{userInfo.nickName}}</text>

<view class="main" catchtap="clickParent">

    <text catchtap="clickChild">{{msg}}</text>

</view>

</view>

 分析原因:最开始去网上找资料说是必须要用户点击才可以使用,否则就会报这个错误,我就寻思着我就是放在button里面的呀,的确符合用户点击才能使用啊。实在搞不定了,我就去官网找样例,还真被我找到了:wx.getUserProfile(Object object) | 微信开放文档

 解决方法:

放在button中还不算符合用户点击这个要求,必须得使用bindtap来绑定一个方法或者一个事件才能够使用,并且我的错误中这种方法已经被废弃,正确的写法:

绑定这个方法就好了,在方法里面使用获取用户信息的api

<!--pages/index/index.wxml-->

<view class="container">

<image src="{{userInfo.avatarUrl}}" class="avatarUrl"></image>

<button class="but1" bindtap="getInfo">点击获取用户信息</button>

  <text>hello {{userInfo.nickName}}</text>

<view class="main" catchtap="clickParent">

    <text catchtap="clickChild">{{msg}}</text>

</view>

</view>

getInfo点击事件:

 getInfo(){
//官网的api,可以进去直接Ctrl+F搜索关键字
   wx.getUserProfile({
      desc: '获取用户信息',
      success:(res)=>{
        this.setData({
        //需要在data中定义一个userInfo空对象用来接收信息        
          userInfo:res.userInfo
        })  
      } ,
      fail:(res)=>{
        console.log('222',res)
      }    
    })
},

无法渲染头像:

如果你的微信名渲染上去了但是你的头像无法渲染并且报错:[渲染层网络层错误] Failed to load image https://thirdwx.qlogo.cn/mmopen/vi_32/8Ta45AtetHRl1AHAaB7JeKQItia8ILQpqHvQpmWUR5coNQRia99nokPmzA1TeJyDiaAiaXADkXWKa4DibhD2obSckdw/132 net::ERR_CONNECTION_RESET

解决办法:

我猜你绝对调用了wx.getUserInfo这个api,直接把这个方法删除,把项目叉掉退出,记得一定要全部退出,退出到桌面后重新打开微信开发者工具,然后点击清缓存,然后在清楚全部缓存和模拟器缓存,OK,重新使用上面那个方法就可以渲染头像了。errMsg: “getUserProfile:fail can only be invoked by user TAP gesture.(微信小程序报错)

 

 官网案例:文章来源地址https://www.toymoban.com/news/detail-486012.html

<view class="container">
  <view class="userinfo">
    <block wx:if="{{!hasUserInfo}}">
      <button wx:if="{{canIUseGetUserProfile}}" bindtap="getUserProfile"> 获取头像昵称 </button>
      <button wx:else open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>
    </block>
    <block wx:else>
      <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image>
      <text class="userinfo-nickname">{{userInfo.nickName}}</text>
    </block>
  </view>
</view>
Page({
  data: {
    userInfo: {},
    hasUserInfo: false,
    canIUseGetUserProfile: false,
  },
  onLoad() {
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
  },
  getUserProfile(e) {
    // 推荐使用 wx.getUserProfile 获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认
    // 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
    wx.getUserProfile({
      desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },
  getUserInfo(e) {
    // 不推荐使用 getUserInfo 获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  },
})

到了这里,关于errMsg: “getUserProfile:fail can only be invoked by user TAP gesture.(微信小程序报错)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • File chooser dialog can only be shown with a user activation.

    使用vue开发时,通过ref通过“this.refs.[name].$el.click()”触发按钮时提示“File chooser dialog can only be shown with a user activation.”,按钮不能触发,网上解决办法是“dispatchEvent(new MouseEvent(\\\'click\\\'))”代替“$el.click()”,在我所在的场景不生效,所以就在要出发按钮组件上加了一个id,按

    2024年01月23日
    浏览(21)
  • 报错-小程序:errMsg: “getUserProfile:fail privacy permission is not authorized“

    报错-小程序:errMsg: “getUserProfile:fail privacy permission is not authorized“

    一、问题描述 小程序 wx.getUserProfile 方法 调用时候报错如下 errMsg: \\\"getUserProfile:fail privacy permission is not authorized\\\" 问题的原因是,新版本依赖的版本库不支持了,这里调整为,2.18.1,可以正常使用了。 那同理如果有其他微信小程序的方法使用报错,那么有可能也是依赖版本库不

    2024年02月06日
    浏览(13)
  • getUserProfile:fail 调用失败?getUserProfile:fail can o

    getUserProfile:fail 调用失败?getUserProfile:fail can o

    一般Fail原因有很多,如果fail函数的参数返回结果有具体的提示错误,比如长度等问题,那么根据提示直接更改就行。 还有一种情况就是我们使用 测试号,Uni开发时 ,我们调用getUserProfile函数返回错误,我们首先要考虑AppId配置问题,要在manifest.json配置我们的Appid  如

    2024年02月11日
    浏览(7)
  • 微信小程序报错 errMsg: “getUserProfile:fail api scope is not declared in the privacy agreement“, errno: 112

    微信小程序报错 errMsg: “getUserProfile:fail api scope is not declared in the privacy agreement“, errno: 112

    其实就是API没有在隐私协议中声明,需要在小程序后台更新对应的隐私协议 完善并提交信息, 注意:更新好隐私协议,要通过审核的,接口才能正常访问 在审核提交时候,选择采集用户隐私 小程序审核通过后,微信就自动会显示隐私协议弹窗组件,这个组件从10.17 使用官方

    2024年02月05日
    浏览(16)
  • rabbitMQ登录报错user can only log in via localhost

    rabbitMQ登录报错user can only log in via localhost

    本地安装好rabbitmq,启动后,输入IP:port,打开登录页面,使用guest/guest登录,报错 这是由于guest账号默认只能通过localhost访问登录,如果通过IP地址访问,则会被限制; 解决办法: 找到rabbitmq安装位置,D:developrabbitMqrabbitmq_server-3.7.17ebin;打开文件rabbimq.app 将{loopback_users

    2024年02月17日
    浏览(14)
  • [vue warn]: inject() can only be used inside setup()

    [vue warn]: inject() can only be used inside setup()

    问题背景:最近在用vue3写管理系统的登录功能的时候,在封装axios之后浏览器控制台出现警告: [Vue warn]: inject() can only be used inside setup() or functional components. 原因:因为在vue3中useRouter,useStore要放在setup中引入,我们在封装axios文件中不能直接引入。 1.bug提示:  2.然后我们就

    2024年02月05日
    浏览(16)
  • ssh 登录报 Authorized users only. All activities may be monitored and reported.

    ssh 登录报 Authorized users only. All activities may be monitored and reported.

    ssh 登录报 Authorized users only. All activities may be monitored and reported. 解决: 修改 /etc/motd 文件,清空内容 修改以后,登录不报 Authorized users only. All activities may be monitored and reported. update 2023-12-04 12:35 如果还不行就干掉 以下两个文件的内容 /etc/issue /etc/issue.net 总结下最全方法: 方法

    2024年02月15日
    浏览(8)
  • 小程序报错:(“ errMsg “:“ navigateTo : fail can not navigateTo a tabbar page “}

    小程序报错:(\\\" errMsg \\\": \\\" navigateTo : fail can not   navigateTo a tabbar page \\\"} 小程序报错:《\\\" errMsg \\\": \\\" navigateTo : fail can not navigateTo a tabbar page \\\"} 错误显示的是: VM791:1 Error: MiniProgramError {\\\"errMsg\\\":\\\"navigateTo:fail can not navigateTo a tabbar page\\\"}     at Object.errorReport (VM807 WAService.js:2)     at Func

    2024年02月05日
    浏览(14)
  • Unity 解决 “... can only be called from the main thread” 问题

    有些属性或方法只能在主线程中调用,如 .gameObject 、 Instantiate() 等。这是 Unity 设计时的一个缺陷(为了保证线程安全),多年来一直没有修正,或者说官方懒得弄。 以 Instantiate() 为例,在非主线程调用时,报错大概如下所示。其他属性或方法的报错也大体相同。 注:应注意

    2024年01月17日
    浏览(21)
  • ERROR: There can be only one Game target per project.

    ERROR: There can be only one Game target per project.

    UATHelper: Packaging (Windows (64-bit)): ERROR: There can be only one Game target per project. D:dockIntermediateSource 把旧的文件删去 一般会出现在更改项目名称后 感谢 There can be only one Game target per project - Development Discussion / Content Creation - Unreal Engine ForumsThere can be only one Game target per project - 

    2024年02月08日
    浏览(21)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包