- 微信官方的隐私保护弹窗怎么使用?
[图片] 如图,还没看到有官方弹窗啊
2023-10-17 - 小程序之私密消息解码解决方案-解码失败问题
最近在调试小程序私密消息,本人也是第一次用此功能,最后遇到一个比较大的问题,按照官方文档走下来,最后发现最后一步解码不好用,交流社区看了很多社友也遇到同样的问题,官方一直没有答复。 起初我也以为是大家自己问题,但调试下来,我最后发现此问题不是大家没用对,就是官方一个失误,这块官方应该没有做到严格的测试就上线了,好在问题好修复。 进来直接寻求结果同学,可以直接拉到最后,拿走改好的代码文件就可以了,如果关注过程,学习下经验的同学,可以从头看完,其实这事细纠起来,挺有意思,虽然问题好修正,但是这个事情的过程很值得学习,测试上有周全,返回值类型各个接口也没有保持一致。 下面会把这三个方面都剖析出来,如果有腾讯小程序的成员看到,希望能尽快修复此问题。 官方链接 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share/private-message.htm 前面的过程都没有问题,问题在于收到消息用户打开消息卡片时,收到了 数据结构如下 { errMsg: 'authPrivateMessage:ok' valid: true, iv: 'xxxx', encryptedData: 'xxxxxx' } 到此一切都是正常,没有问题,就是在解密 encryptedData,解不出来。 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html [图片] 开放数据获取二种方式,这个问题也是很巧合,这两方式在此问题上都行不通。 先说方式二,按理说,这个方式我最希望用,因为实现简单,我后端是结合云开发,解密数据是维护用户登录状态,用code 还得换取session_key 然后手动去解密.... ,这里不多说了,不支持,对于我们来说一点发挥余力也没有,希望官方能早日支持,类getShareInfo 只要一个cloudID 就好了。 这块不了解的同学可能糊涂了,没关系可以略过这一段。 再说方式一,这是本文的重点, 既然方式二不行,只能方式一了, 按照按照文档一步一步走下去,问题这个示例代码上,下载了示例代码, [图片] 经过一段时间苦逼的折腾,把有问题的代码给修复了,原来官方给的代码是有问题的,所以解不出来,解决办法只有把这块代码重构一下。 修正后,直接解码出来了。 这在云函数里调用的,如下 。 [图片] 终于拿到解密数据,这个其实就是activityID ,(关于转发的activityID 设计上我还觉得还有商榷地方,用着不是很方便, 比如动态消息,转给个人就拿不到shareTicket ,转给群才有,这个很奇怪,做协同应用这个很有用,不是营销那种转发,我觉得这个官方只考虑了那种营销场景,这得另开篇再议) 我将代码重封装一了下,下面是调用示例。需要的可以私我一下! 修改后的正确的代码 const WXBizDataCrypt = require('../decrypt/WXBizDataCrypt'); try { const cryptor = new WXBizDataCrypt(APPID, sessionKey); const decryptData = cryptor.decrypt(encryptedData, iv); return decryptData; } catch (e) { console.log(e); } //调用 小结一下,希望官方一是修复下示例代码,另外非常非常期待官方,方式二给实现了, 就是云调用直接获取开放数据。 还有就是动态消息转发给个人拿不到ShareTicket 问题也权衡一下。 感谢小程序团队带来贡献,抱拳!
03-11 - 11月9日小程序获取用户头像、昵称接口再次改版???为了还原用户授权和之前一样,分享实用代码,复制即用。
先看效果 [图片] wxml代码 <!-- //////////////////////////////////////////////////////////////////////////新版本获取用户微信头像和昵称 --> <view style="margin: 100px 0 0 0;background-color: #00000096;position: fixed;top: 0;width: 100%;height: 100%;z-index: 99999;display: flex;align-items: center;justify-content: center;"> <view wx:if="{{show_get_avatar}}" style="background-color: #fff;border-radius: 20rpx;width: 75%;padding: 3%;"> <view style="display: flex;justify-content: center;font-size: 32rpx;font-weight: 800;">授权微信登录</view> <view style="height: 20rpx;"></view> <view style="display: flex;justify-content: center;font-size: 28rpx;width: 80%;margin: 0 0 0 10%;">为了完善用户个人信息,我们需要获取您的微信头像和昵称</view> <view style="height: 20rpx;"></view> <button wx:if="{{!show_get_nickname}}" open-type="chooseAvatar" bindchooseavatar="get_avatar" style="font-size: 25rpx;background-color: #00810b;color: #fff;">点击授权头像</button> <view style="height: 20rpx;"></view> <view style="display: flex;justify-content: center;"> <image wx:if="{{show_get_nickname}}" src="{{avatar}}" style="width: 80rpx;height: 80rpx;border-radius: 50%;"></image> </view> <view style="height: 20rpx;"></view> <form bindsubmit="get_nackname_form"> <view style="display: flex;justify-content: center;align-items: center;"> <input wx:if="{{show_get_nickname}}" type="nickname" bindtap="get_nickname" placeholder="点击授权昵称" name="nickname" style="text-align: center;width: 48%;font-size: 25rpx;background-color: #00810b;color: #fff;border-radius: 10rpx;height: 60rpx;" placeholder-style="color:#fff;font-weight:800;text-align: center;"></input> </view> <view style="height: 20rpx;"></view> <view style="display: flex;width: 90%;margin: 0 0 0 5%;"> <button style="font-size: 25rpx;">不登录</button> <view style="width: 20rpx;"></view> <button formType="submit" style="font-size: 25rpx;background-color: #009aa5;color: #fff;">立即登录</button> </view> </form> </view> </view> <!-- //////////////////////////////////////////////////////////////////////////新版本获取用户微信头像和昵称 --> js代码 //////////////////////////////////////////////////////////////////////////新版本获取用户微信头像和昵称 get_avatar(e){ console.log(e.detail.avatarUrl) this.setData({ show_get_nickname:1, avatar:e.detail.avatarUrl, }) }, get_nackname_form(e){ console.log(e.detail.value) if(e.detail.value.nickname==""||!this.data.avatar){ console.log("请授权") wx.showToast({ title: '请授权头像和昵称', icon: 'none', duration: 1000 }) }else{ var user_info={ avatar:this.data.avatar, nickname:e.detail.value.nickname } wx.setStorageSync('user_info', user_info) console.log(wx.getStorageSync('user_info')) } } //////////////////////////////////////////////////////////////////////////新版本获取用户微信头像和昵称 给个关注么么哒~~,接小程序开发,大家一起讨论技术~~
2022-11-17 - 想做红包小程序?这篇你一定要看看
如果你想在平台内做红包小程序,这些问题你一定需要了解。 [视频] 一、相关红包小程序可能需要选择社交红包类目。 1、哪些红包内容才需要设置社交红包类目呢? 这个问题小编早有准备,详情可参考:什么小程序需要社交红包类目? 2、社交红包类目具体申请流程如下: (1) 小程序涉及红包内容需选择社交红包类目,所需资质为:《增值电信业务经营许可证》,即ICP证。 (2) 在申请通过社交红包类目后,需按站内信指引开通安全红包商户号 (3) 商户号开通成功后并绑定小程序主体,再提交代码审核。 二、社交红包小程序有哪些内容是不能做的? 1、社交红包小程序内暂不支持红包广场业务场景。即社交红包小程序的红包发放与领取仅限在群和好友中进行,禁止在无好友或群关系的场景传播,如基于LBS的红包广场。 违规示例: [图片] 2、红包类活动暂不支持朋友圈传播。 违规示例: [图片] 3、社交红包小程序暂不支持“回赏”类红包玩法。即A发一个红包给任何用户,任何用户需回包一个红包给A,才能拆开A的红包。 违规示例: [图片] 4、个人主体暂不支持社交红包。 违规示例: [图片] 5、社交红包暂不支持单笔交易支付金额突破商户号额度(当前商户号额度为204元)。 违规示例: [图片] 三、社交红包小程序暂不支持自定义功能红包? 若小程序内涉及向用户提供含自定义功能的红包服务,表现形式包括但不限于:文本/图片/音频/视频等形式,请开发者接入微信公众平台内容安全API(imgSecCheck、msgSecCheck、mediaCheckAsync)能力,同时做好人工审核相关的内容过滤机制,校验用户输入的文本/图片/音频/视频等内容,拦截政治敏感、色情违法违规等相关信息内容,保证用户上传的内容安全,并及时处理违规内容/账户,降低被恶意利用导致传播恶意内容的风险。一经发现将根据违规程度对该小程序采取限制功能直至封号处理。 违规示例: [图片]
2020-04-23