2***@qq.com
2***@qq.com
  • 发布:2023-08-16 10:41
  • 更新:2023-09-06 19:02
  • 阅读:2555

【报Bug】Button 新增回调事件 bindagreeprivacyauthorization, uni.chooseImage暂代替方案,需要的看过来

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 3.8.12

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

基础库版本号: 3.0.0

项目创建方式: HBuilderX

示例代码:

<button id="agree-btn" open-type="agreePrivacyAuthorization" @bindagreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button>

操作步骤:
 <button id="agree-btn" open-type="agreePrivacyAuthorization" @bindagreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button>  

handleAgreePrivacyAuthorization() {  

}

预期结果:

有回调

实际结果:

目前木有回调

bug描述:

微信授权方案为button新增bindagreeprivacyauthorization回调事件

暂时解决方案
app.vue

globalData: {  
    showPrivacy: false  
},  
onLaunch() {  
    wx.onNeedPrivacyAuthorization(resolve => {  
        getApp().globalData.showPrivacy = true  
    })  
}

使用页面

        <auth-dia ref="auth" />  

import authDia from '@/components/authDia.vue'  

methods: {  
  handChooseImg() {  
    if (getApp().globalData.showPrivacy) {  
    this.$refs.auth.showEdit()  
    return  
   }  
   uni.chooseMedia({  
    count: 1,  
    mediaType: ['image'],  
    sourceType: ['album', 'camera'],  
    success: (res) => {  
        console.log(res)  
    },  
    fail: (err) => {  
        console.log(err)  
    }  
 })  
}  
}  

授权弹框authDia.vue

<template>  
<u-popup v-model="show" mode="center" border-radius="48" @close="handClose">  
        <view class="auth-dia">  
            <view class="name" @click="handGo">  
                {{ name }}  
            </view>  
            <button id="agree-btn" open-type="agreePrivacyAuthorization" @click="handOk">同意</button>  
        </view>  
    </u-popup>  
</template>  

export default {  
        data() {  
            return {  
                show: false,  
                name: ''  
            }  
        },  
        methods: {  
            handGo() {  
                wx.openPrivacyContract({})  
            },  
            handOk() {  
                getApp().globalData.showPrivacy = false  
                this.$emit('confirm')  
                this.handClose()  
            },  
            handClose() {  
                this.show = false  
            },  
            showEdit() {  
                wx.getPrivacySetting({  
                    success: (res) => {  
                        this.name = res.privacyContractName  
                    },  
                })  
                this.show = true  
            }  
        }  
    }  
2023-08-16 10:41 负责人:无 分享
已邀请:
8***@qq.com

8***@qq.com

用@agreeprivacyauthorization="handleAgreePrivacyAuthorization"

  • XandL

    这个答案是对的,@后不需要bind, 还有id="xxx"是一定要写的,不然会出现无法回调但是实际上已经同意的情况。控制台会报警告找不到事件。 <button id="agree-btn" class="btn primary" open-type="agreePrivacyAuthorization" @agreeprivacyauthorization="handleAgree">同意并继续</button>

    2023-08-31 10:49

  • 4***@qq.com

    没加bind也不触发。onNeedPrivacyAuthorization都是正常。就是点同意不触发@agreeprivacyauthorization回调

    2023-09-08 10:31

  • 5***@qq.com

    回复 XandL:为什么@agreeprivacyauthorization在有些手机上还是没有回调,

    2023-09-08 13:39

  • 5***@qq.com

    回复 4***@qq.com: 你可以能需要升级一下库3.0.1

    2023-09-08 13:40

2***@qq.com

2***@qq.com (作者)

前置步骤: 需要前往微信公总平台更新隐私政策, 添加 用户上传避震器图片和凭证图片, 上传头像 权限

目前需要手写弹框, 等待uni官网支持回调事件后,可以自动拉起弹框

1***@qq.com

1***@qq.com

写的很好,有个问题,如果全局弹窗提示啊,这样入侵到业务里太多地方要改了

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

    main.js 注册注册, 要不就是在自己封装一个全局得选择图片方法,等待官方支持这个回调后就方便多了

    import authDia from "@/components/authDia.vue";

    Vue.component("auth-dia", authDia);

    2023-08-16 11:03

  • 1***@qq.com

    回复 2***@qq.com: 这样还是要每个地方写,太蛋疼了,能用官方的弹窗就好了

    2023-08-16 11:03

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

    回复 1***@qq.com: 哈哈,等官网支持吧,没想到微信那边突然扩展按钮事件了

    2023-08-16 11:06

  • 1***@qq.com

    回复 2***@qq.com: 如果有很多业务和权限怎么处理,我看你是直接改成false了

    2023-08-16 11:11

  • 1***@qq.com

    已经处理,说下方案



    1. 全局注入组件

    2. 全局监听、收集回调操作

    3. 处理tabbar切换和返回问题

    2023-09-12 17:52

1***@qq.com

1***@qq.com

我是纯小白,不会写呀,好烦呀

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

    ctrl+c,然后ctrl+v

    对应文件就行

    2023-08-16 11:04

  • 1***@qq.com

    因为我用的是uni-file-picker组件去调用用户相册的,我真不知道怎么加用户授权了,好烦呀

    2023-08-16 11:06

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

    回复 1***@qq.com: 那得修改它这个组件里里面得代码了, 或者等他组件更新

    2023-08-16 11:08

  • 1***@qq.com

    回复 2***@qq.com: 所以呀,我就好烦呀,组件更新又不知道多久了,看官方都不着急的哑子

    2023-08-16 11:10

  • 1***@qq.com

    回复 2***@qq.com: 最奇葩的是resolvePrivacyAuthorization只支持2.33以上的库,微信也是真的懒呀,不愧是大厂

    2023-08-16 11:30

i***@163.com

i***@163.com

代码没贴完吧?
点击同意后还要执行resolvePrivacyAuthorization({ buttonId: 'agree-btn', event: 'agree' }).

然而不知道是不是@bindagreeprivacyauthorization改@click存在问题,resolvePrivacyAuthorization的回调走到fail了.

下次使用chooseImage依然会报错.

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

    chooseImage不要使用了, 使用chooseMedia函数, 你的这段代码是拉起微信提供的弹框, 需要在@bindagreeprivacyauthorization事件中调用,目前uni不支持, 所以需要自己写个弹框,用@click暂时过渡

    2023-08-16 11:12

  • i***@163.com

    回复 2***@qq.com: 如果resolvePrivacyAuthorization不调用了的话,那现在onNeedPrivacyAuthorization里面就是单纯的把弹框隐藏掉,好像没啥意义了.

    为什么后续就可以调用chooseMedia了?

    2023-08-16 11:24

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

    回复 i***@163.com: 按钮上有扩展事件open-type="agreePrivacyAuthorization" 点击后, 微信那边会有记录

    2023-08-16 11:41

i***@163.com

i***@163.com

最新消息...
似乎刚刚微信又把权限放开了...可能投诉的人太多吧...

  • 1***@qq.com

    别说你们专业的前端了,我一个小白都觉得,要程序员自己写一个弹窗,而不是微信自己提供一个弹窗,需要调用隐私的API上自动提示,把工作全交给你们开发,我也是醉了,如果不能全局直接一个弹窗授权,需要一个一个去加,那就真的无解了,这工作量,啧啧啧

    2023-08-16 11:33

  • 2***@qq.com

    笑死了,腾讯在干嘛啊

    2023-08-16 13:24

  • ETT

    妈耶 所以现在怎么搞啊?

    2023-08-16 13:45

piaoyi_UI

piaoyi_UI - 【插件开发】【专治疑难杂症】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=193663(微信搜索飘逸科技UI小程序直接体验)】【骗子请绕道】问题咨询请加QQ群:120594820,代表作灵感实用工具小程序

没有同意弄一个假的按钮,同意后在显示实际业务按钮

2***@qq.com

2***@qq.com

大佬大佬
wx.onNeedPrivacyAuthorization

这个api一直不触发 是怎么回事

我获取手机号 根本进不到这个方法里

  • 2***@qq.com

    你配置了 "usePrivacyCheck": true 这个没

    2023-08-24 10:19

  • 1***@163.com

    回复 2***@qq.com: 我设置了也触发不了,怎么办

    2023-08-24 10:46

  • 1***@163.com

    你的问题解决了吗?getApp().globalData.showPrivacy一直是false

    2023-08-24 14:38

  • 1***@163.com

    回复 2***@qq.com: 求助,我现在设置这个 "usePrivacyCheck": true 会报错 app.json.json 文件错误] app.json: app.json,怎么办呀

    2023-08-24 14:39

  • 1***@163.com

    https://developers.weixin.qq.com/community/develop/doc/0002c40c4d401082a230d3fb161000 你去看看这个问题下的回答,看对你有没有帮助

    2023-08-24 14:40

  • 1***@163.com

    回复 1***@163.com: 在 manifest.json 最下面源码视图,找到mp-weixin,添加进去重新编译

    2023-08-28 14:47

1***@163.com

1***@163.com

大佬大佬
wx.onNeedPrivacyAuthorization(resolve => {
getApp().globalData.showPrivacy = true;
});
这段代码好像没有生效,在其它的地方使用getApp().globalData.showPrivacy是false,请问是什么原因导致的呢

  • 1***@163.com

    https://developers.weixin.qq.com/community/develop/doc/0002c40c4d401082a230d3fb161000 你去看看这个问题下的回答,看对你有没有帮助

    2023-08-24 14:38

  • 1***@163.com

    回复 1***@163.com: 清除授权并改为uni.onNeedPrivacyAuthorization(resolve => {


    getApp().globalData.showPrivacy = true;


    }),还是不行,一直是false,我实在获取手机号使用<button class="wx box" open-type="getPhoneNumber" @getphonenumber="onGetPhoneNumber">手机号快捷登录</button>

    2023-08-24 14:43

  • 1***@163.com

    回复 1***@163.com: "usePrivacyCheck": true 这个加上了没,然后再清理下模拟器的缓存,重新编译

    2023-08-24 16:44

  • 1***@163.com

    回复 1***@163.com: 好像是可以了,同意之后没有用到this.resolvePrivacyAuthorization({ buttonId: 'agree-btn', event: 'agree' }),就直接关闭了弹窗

    2023-08-24 17:46

3***@qq.com

3***@qq.com

也可以看看这篇文章哈 用uniapp实现隐私相关的功能以及部分常见问题解答: https://ask.dcloud.net.cn/article/40701

Honsan

Honsan

借楼-楼主息怒:Dcloud开发中心实人身份认证失败,无法打包;急急急急急急

  • BoredApe

    重新发一个帖子

    2023-09-07 08:44

要回复问题请先登录注册