1***@qq.com
1***@qq.com
  • 发布:2024-07-29 13:45
  • 更新:2024-09-13 22:55
  • 阅读:411

【报Bug】uniapp 编译支付宝小程序 chooseAvatar 方法未执行

分类:uni-app

产品分类: uniapp/小程序/阿里

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 19045.4291

HBuilderX类型: 正式

HBuilderX版本号: 4.23

第三方开发者工具版本号: 3.8.11

基础库版本号: 2.9.6

项目创建方式: HBuilderX

操作步骤:
<button class="avatar-wrapper" open-type="chooseAvatar" @chooseAvatar="onChooseAvatar">  
  <image class="avatar" src="{{avatarUrl}}"></image>  
</button> 

预期结果:

返回用户头像

实际结果:

方法未执行

bug描述:

button 获取用户头像 chooseavatar 方法未执行

2024-07-29 13:45 负责人:无 分享
已邀请:

最佳回复

DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

更新:
发现支付宝小程序的事件名称和 uniapp 的大小写不一致,有平台差异,我做了调整,你可以通过下面方式测试验证。

解压我提供的附件,找到 HBuilderX 或者 node_modules 找到安装目录,/Applications/HBuilderX-Alpha.app/Contents/HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-mp-alipay/dist ,替换解压后的 dist 文件夹,里面是三个文件夹。

这个修改包含了,在支付宝小程序中把 @chooseavatar 编译为 chooseAvatar


对于 button 的属性,编译工具默认不做调整,你可以观察 button 的编译结合和原生编写是否有区别。

经过我实际测试,vue3 运行到支付宝小程序,button 设置 open-type="chooseAvatar" 可以正确运行,看你提供的源码还是原生写法

    <view>下面展示 button 获取用户头像</view>  
        <button class="avatar-wrapper" open-type="chooseAvatar" @chooseAvatar="onChooseAvatar">  
            <image class="avatar" :src="avatarUrl"></image>  
        </button>  
        <view> 自动 推荐 nickname</view>  
        <input type="nickname" placeholder="请输入昵称" v-model='nickName' />  

<script>  
    export default {  
        data() {  
            return {  
                avatarUrl: '',  
                nickName:''  
            }  
        },  
methods:{  
            onChooseAvatar(e) {  
                const {  
                    avatarUrl  
                } = e.detail;  
            console.log('选择头像',avatarUrl);  
            this.avatarUrl = avatarUrl  
            }  
}  
}
蔡cai

蔡cai

看文档,只支持微信小程序

  • 蔡cai

    试一下用这个api获取:uni.getUserInfo,文档地址:https://uniapp.dcloud.net.cn/api/plugins/login.html#getuserinfo

    2024-07-29 14:05

  • 1***@qq.com (作者)

    回复 蔡cai: https://open.alipay.com/portal/forum/post/173201040 getUserInfo9月15就用不了了,也改成和微信一样了。是不是还没更新

    2024-07-29 15:32

  • 蔡cai

    回复 1***@qq.com: 是不是支付宝开发者工具基础库太低了

    2024-07-29 17:29

DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

根据我上面说的,确认一下。如果这块后续有改动,可以留言告诉我

  • 1***@qq.com (作者)

    用的是vue2 是uniapp编译的支付宝

    2024-07-30 15:08

  • DCloud_UNI_OttoJi

    回复 1***@qq.com: 你试了吗,vue2 运行不了吗

    2024-07-30 15:45

  • DCloud_UNI_OttoJi

    回复 1***@qq.com: 经我测试 vue2 可以使用上述代码,正确获得头像和昵称。

    2024-07-30 15:47

  • 1***@qq.com (作者)

    回复 DCloud_UNI_OttoJi: 我再试试

    2024-07-30 16:52

  • 1***@qq.com

    回复 1***@qq.com: 亲,解决了没

    2024-08-06 17:30

1***@qq.com

1***@qq.com

我也遇到同样的问题

  • DCloud_UNI_OttoJi

    看我提供的 demo,根据 demo 说具体问题。提供更多信息,有助于定位和解答你的问题。

    2024-08-07 12:07

  • 1***@qq.com

    回复 DCloud_UNI_OttoJi: 没什么用 onChooseAvatar这个方法都不触发

    2024-08-09 16:00

  • 1***@qq.com

    选了照片之后 就没触发 onChooseAvatar 也获取不到头像地址 也没有什么报错

    2024-08-09 16:01

  • DCloud_UNI_OttoJi

    回复 1***@qq.com: 我的意思是你使用我提供的 demo,可以用吗?我测试快速授权使用自己的头像可以正常获取。是相册选取不行,还是授权获取头像也不行?

    2024-08-09 18:12

  • 1***@qq.com

    回复 DCloud_UNI_OttoJi: 都用不了

    2024-08-10 15:08

  • DCloud_UNI_OttoJi

    回复 1***@qq.com: 使用我提供的 demo,可以实现授权自己的头像并打印。如果你这个也不能用,请提供完整项目工程。并说明你的操作流程,这是一个很简单的实例

    2024-08-13 17:57

  • f***@163.com

    回复 DCloud_UNI_OttoJi: 支付宝小程序onChooseavatar直接点击获取支付宝头像,获取到的e.detail.avatarUrl直接放到uni.uploadFile里面的filePath字段上,报错,'uploadFile:fail filePath 无效' 怎么解决?

    2024-08-27 16:59

  • l***@163.com

    回复 f***@163.com: 请问解决了?

    2024-09-19 12:55

2***@qq.com

2***@qq.com

今天我也遇到这个问题,查看支付宝的文档是因为支付宝的回调方法是onChooseAvatar,如果用uniapp文档中的@chooseavatar编译出来的方法是onChooseavatar所以没有响应。。。我的解决办法是判断是支付宝的时候用@chooseAvatar,微信的时候用@chooseavatar就可以。。。这个bug能修正嘛?

  • DCloud_UNI_OttoJi

    好,这个问题清楚。在修复之前你可以先用条件编译处理,我调整下,有进展我会同步

    2024-08-14 17:36

  • DCloud_UNI_OttoJi

    回复 DCloud_UNI_OttoJi: 这个我调整好了,你方便开个新帖子吗?我发你一个测试版本,你验证下,就不需要条件编译了

    2024-08-14 18:07

  • DCloud_UNI_OttoJi

    回复 DCloud_UNI_OttoJi: 你看我指定的评论把,按照评论的内容测试是否好了,后续会随版本发布

    2024-08-14 19:20

f***@163.com

f***@163.com

支付宝小程序onChooseavatar直接点击获取支付宝头像,获取到的e.detail.avatarUrl直接放到uni.uploadFile里面的filePath字段上,报错,'uploadFile:fail filePath 无效' 怎么解决?

  • 2***@qq.com

    我今天也遇到这个问题,找了一下原因应该是支付宝选择头像后返回的地址是服务器的图片地址,所以可以用uni.downloadFile先下载下来,在用返回结果的tempFilePath本地临时路径进行uni.uploadFile上传就可以了,但是要注意如果选择本地相册时,返回的是本地的地址可以直接上传,所以要判断一下是否需要先uni.downloadFile。。。不知道有没有更好的办法。

    2024-08-28 14:57

  • f***@163.com

    回复 2***@qq.com: 谢谢

    2024-08-29 15:07

  • l***@163.com

    请问怎么解决的

    2024-09-15 18:51

z***@foxmail.com

z***@foxmail.com

<button class="null-avatar" hover-class="none" open-type="chooseAvatar"  
                    @chooseAvatar="getAliAvatar">  
                    <image class="default-avatar" src="../../static/avatar.png" mode="aspectFit"></image>  
                </button>

chooseAvatar和chooseavatar都不行是为啥啊

  • DCloud_UNI_OttoJi

    不知道的你 vue 版本,页面完整代码怎么写的,发一下完整目录,看楼上都可以用。你按照我指定评论使用了吗?压缩包内容替换了吗

    2024-09-04 20:15

  • z***@foxmail.com

    回复 DCloud_UNI_OttoJi: 应该是唤不起弹框,这是什么问题

    2024-09-05 09:15

  • DCloud_UNI_OttoJi

    回复 z***@foxmail.com: 是使用真机调试吗?我的回复包含了好几个问题呢,看一下按照我问的回复清楚

    2024-09-05 10:51

  • z***@foxmail.com

    回复 DCloud_UNI_OttoJi: 找到原因了,ide 的版本低,my.canIUse('button.open-type. chooseAvatar')为 false,麻烦了

    2024-09-05 18:10

  • DCloud_UNI_OttoJi

    回复 z***@foxmail.com: 好

    2024-09-06 11:01

  • z***@foxmail.com

    回复 DCloud_UNI_OttoJi: 路径是这个:/Applications/HBuilderX.app/contents/HbuilderX/plugins/uniapp-cli/node_modules/@dcloudio/uni-mp-alipay/dist 里面只有一个 index.js 能替换吗

    2024-09-06 14:38

  • DCloud_UNI_OttoJi

    回复 z***@foxmail.com: 对,你先供着。这两天会发布一个 alpha 新版本,正是支持 chooseavatar

    2024-09-06 15:18

DCloud

DCloud

HBuilderX 4.27.2024091308-alpha 已修复。

  • l***@163.com

    请问支付宝小程序通过button 获取到的头像地址是个什么地址 可直接用于上传? 还是说要先下载 再上传

    2024-09-15 17:28

  • l***@163.com

    选择头像过后 选支付宝头像(http) 与 相册中选择图片(https) 返回的路径协议不一致 一个是http开头 一个是https开头

    http开头的直接使用uploadFile 报“uploadFile:filePath 无效”

    2024-09-15 18:55

  • DCloud_UNI_OttoJi

    回复 l***@163.com: 第一个问题是业务判断问题,支付宝返回的头像地址自己决定存字符串还是下载后转存,楼上评论区有不同的实践方案。第二个问题,上传文件时候不允许传递三方路径,解决思路和第一个问题一样,自己判断是改造业务,还是自己转存

    2024-09-18 11:52

  • l***@163.com

    回复 DCloud_UNI_OttoJi: HBuilderX 4.27.2024091308-alpha 已修复 但是我测试支付宝开发者工具chooseavatar还是没有执行 选了图片还是没得反应 真机有反应

    2024-09-19 12:57

  • DCloud_UNI_OttoJi

    回复 l***@163.com: 对,这种开放功能只能是真机测试,模拟器测不了,我补充下文档

    2024-09-19 18:10

要回复问题请先登录注册