• 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

     解决效果示例:

    ​​​​​​​ 

     报错代码:

    点击获取用户信息

      hello {{userInfo.nickName}}

        {{msg}}

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

     解决方法:

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

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

    bindtap="getInfo">点击获取用户信息

      hello {{userInfo.nickName}}

        {{msg}}

    getInfo点击事件:

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

    无法渲染头像:

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

    解决办法:

    我猜你绝对调用了wx.getUserInfo这个api,直接把这个方法删除,把项目叉掉退出,记得一定要全部退出,退出到桌面后重新打开微信开发者工具,然后点击清缓存,然后在清楚全部缓存和模拟器缓存,OK,重新使用上面那个方法就可以渲染头像了。

     

     官网案例:

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

  • 相关阅读:
    六、vim编辑器的使用
    SpringBoot3数据库集成
    6.Jenkins-代码更新Jenkins自动发布项目
    探索ChatGPT的Fine-tuning和Embeddings
    OpenGl ES---纹理
    【数据结构】排序(1)插入排序、选择排序
    MongoDB数据库入门到精通看这一篇就够了
    postgres查看是否锁表并释放
    Hadoop(三)通过C#/python实现Hadoop MapReduce
    MySql索引
  • 原文地址:https://blog.csdn.net/qq_51580852/article/details/126860681