最近有位同学咨询,他开发的微信小程序,有一个图片保存功能,就是对生成的二维码,点击分享后可以保存到本地,很普通的功能,在本地测试以及提交的体验版中,该功能都使用正常,都可以正常保存图片,但是在发布版中,该功能却无法使用,这是怎么回事呢?今天丁老师根据这个问题,做一下解释和回答。
首先查看该同学的代码:
wx.downloadFile({
url:image_url,
success: (res) => {
if (res.statusCode!==200) {
console.log('图片下载失败')
}
else{
wx.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: () => {
console.log('保存成功')
},
fail: (error) => {
console.log('保存失败', error)
}
})
}
},
fail: (err) => {
console.log('图片下载失败,网络异常')
}
})从这个代码上看,先是下载图片,然后根据保存的临时路径,保存到本地,这个代码一点问题也没有,并且在本地和体验版中,都能成功运行,成功保存图片,这说明程序代码是没有问题的,那么为什么在正式版中无法保存呢?
问题分析
1.根据微信小程序的要求,下载的远程图片,域名必须在微信小程序开发者设置中的白名单中,检查白名单后发现没问题,该图片的根据域名已经添加白名单。
2.检查了图片文件,是正规的普通jpg文件,200K左右,尺寸不大,文件大小符合规范,没问题。
3.既然在体验版中可以用,在正式发布版中没法用,那么最后就只剩下权限问题了。和该同学沟通,了解了他在微信发布时的情况,果然,就是发布时的问题,他没有选择“采集用户隐私”!就时这个问题引起的!
采集用户隐私
1.微信小程序要求,在发布微信小程序时,需要选择是否采集用户隐私信息。
2.在以往的版本中,隐私信息包含用户的姓名、电话、地址等敏感信息,如果涉及采集这些信息,则必须选择“采集用户隐私”。
3.在现在的微信小程序审核中,用户相册的写入权限,也容纳在了采集用户隐私信息中,即使该小程序没有读取用户姓名、电话、地址等敏感信息,而涉及用户照片读取和写入的,一样归类未采集用户隐私信息。
4.因此,对小程序重新进行发布,在“用户隐私保护指引设置”中,勾选“采集用户隐私信息”即可。

解决方法
1.提交审核时,在“用户隐私保护指引设置”中,勾选“采集用户隐私”。
2.点击下方的“点击更新”用户隐私保护指引,完成用户隐私信息设置。
3.完善相册写入权限的用途、完善联系方式。

4.完善信息后,点击
保存即可。然后关闭窗口,在审核页面,点击提交审核按钮即可。
全文总结
目前微信小程序的生态越来越完善,微信官方针对小程序的审核也越来越严格,对各项功能的使用,都有这严格的限制标准,开发者在开发上架时,需要完善对应的隐私协议、功能说明才能够正常使用。
丁老师开发了上百款的微信小程序,发现一个规律,那就是在本地调试的正常,在体验版中功能使用的正常,发布后无法使用的功能,往往不是小程序代码的问题,更多的都是规则、白名单、开发者设置、隐私协议、接口授权的问题,这往往是属于技术范畴之外的要求,如果仅在代码中找问题,那这个故障永远都没法解决。建议各位开发者朋友,在遇到类似的问题时,不要只盯着代码,多去看看微信小程序官方的文档和最新协议要求,说不准就能找到解决方法。
以上就是该文章的全部内容,如果你的小程序也遇到了相关的问题,可以试着去解决一下。如果解决不了,或者是有其他更好的意见和建议,欢迎联系丁老师咨询和交流!
最近有做前端的小伙伴咨询丁老师,网站中使用的不是只有css吗?怎么现在还有Less和Scss,这些都是什么,和CSS有什么区别呢?今天丁老师介绍一下。CSSCSS就是传统的网站样式表,是Cascading Style Sheet的缩写,...
普通账号个人认证号企业认证号蓝色认证标识薯条推广聚光平台效果广告普通应商业合作以KOL/KOC身份和品牌合作以品牌方身份发起起合作开设店铺个人店铺或个体户(不支持港澳台公司申请)旗舰店店或专卖店(支持港澳台公司申请)主动私信每天10位陌...
在开发苹果IOS APP时,遇到了个问题。最近把我的mac os更新到了Sequoia版本,然后xcode15居然不能用了(囧),查了很多资料,发现原来是Sequoia不支持xcode15,这可怎么办呢,没必要因为这个重装系统啊,在经过...
phpmyadmin使用正常,但是在sql文件时,提示500 internal Server error/nginx,查看了下nginx的日志,提示"open() "/usr/local/nginx/client_b...
挺不错的浏览器,强加入了edge image viewer图片浏览器,感觉不是那么好,对于开发者来说,更想要原生的东西。包括微信网页版里的表情图片,用edge image viewer打开的话,无法保存为gif格式,即使保存了,也只是第一帧...
在使用wordpress的过程中,有的时候部分页面打不开,或是程序不能正常使用,也没有显示具体的错误信息,这个时候该怎么办呢?首先是查看错误日志,可以查看wordpress本身的错误日志,以及php的错误日志。这时有朋友提问了,wordpr...
二维码码有三个参数: 数据类型、大小(“像素 ”数)和纠错级别。能存储多少信息也取决于这些参数。例如,纠错级别越低,可存储的信息越多,但代码越难被读者识别。最大尺寸和最小纠错值如下:最大字符数 7089个字符(纯数字)字母数字 4296个字...
最近要在某单位内网部署项目,使用了lnmp来配置环境,软件安装成功,可安装后不管是打开ip地址还是默认站点,都提示nginx 403 forbidden,这是怎么回事呢?首先,已经出现了nginx 403提示,说明nginx是安装正常的。其...