小程序开发-第三章第五节获取用户权限、下载文件、保存到相册、用户拒绝授权重新授权-全栈工程师之路-中级篇

简介: 小程序开发-第三章第五节获取用户权限、下载文件、保存到相册、用户拒绝授权重新授权-全栈工程师之路-中级篇

继上一节课,我们已经简要说明了将图片保存到相册的流程和方法。
这节课我们围绕这个问题,展开讲解获取用户权限,将网络图片下载到临时文件,最后保存到相册。


获取用户权限 wx.authorize

image.png

使用方法如下:

// 可以通过 wx.getSetting 先查询一下用户是否授权了
wx.getSetting({
    success(res) {
      if (!res.authSetting[scope]) {
        wx.authorize({
          scope: scope,
          success() {
              console.log('授权成功')
          }
})}}})

这里的scope有5种参数,使用中间那行接口的时候,就要获取相应的scope权限。

image.png

这里我们拿scope.writePhotosAlbum为例。

image.png

 

我们在小程序初始化的时候获取权限,也可以在要保存图片的时候获取权限。
保存运行效果如下:

image.png

 

这里还有一个调试小技巧。



调试技巧

image.png

清楚授权缓存,就可以不断调试授权。



下载文件wx.downloadFile

我们在点击图片的响应事件里面调用下载文件的方法

showImg:function(event){
    var imgSrc = event.currentTarget.dataset.imgSrc;
    //下载文件
    wx.downloadFile({
      url:imgSrc,
      success:function (res){
        console.log(res);
      }
    })
},

保存运行,点击图片。可以在console中查看日志。

image.png


这里的tempFilePath就是下载到本地的临时文件。
可以进一步的调用wx.saveFile将临时文件保存为永久文件。
注意这个文件大小限制了10M。



保存到相册wx.saveImageToPhotosAlbum

接下来我们将本地的临时文件,保存到相册里。

wx.saveImageToPhotosAlbum({
      filePath: res.tempFilePath,
      success:function(data){
        console.log(data);
      },
      fail:function(err){
        console.log(err);
      }
})

这里的res就是我们调用下载文件的回调数据,实际代码结构如下:

image.png

 

保存运行,点击图片。

image.png

在工具上调试,会弹出保存窗口。
可以点击确定、取消。
到这里我们的功能就都完成了。
接下来我们来看几种错误情况。
1、最开始用户点击了拒绝授权。(使用上面的调试技巧,清空一下授权记录)
错误码:errMsg:”saveImageToPhotosAlbum:fail auth deny”

image.png

 

2、用户点击了取消。
错误码:errMsg:”saveImageToPhotosAlbum:fail cancel”

image.png

 

3、如果一开始用户点击了拒绝授权,那就一直是拒绝的。
我们在保存错误回调中加入一下测试代码

image.png


 

运行结果

image.png



用户拒绝授权重新授权

但是我们有很多小程序的设计都是在用户同意授权的情况下,才能正常使用的。
这里我们可以通过调用wx.openSetting的方法打开授权设置页面。
修改我们的测试代码。

image.png

 

保存运行。点击图片。

image.png

 

就会打开授权管理页面。
用户设置完成点击确定,会响应success函数。
但是不管用户是否重新打开都是响应同一个函数。
所以我们可以判断我们需要的权限是否打开,
然后分别给出提示。
我们修改wx.openSetting函数,保存运行。点击图片。

wx.openSetting({
    success(settingdata){
        console.log(settingdata)
        if (settingdata.authSetting.scope.writePhotosAlbum){
            console.log('获取权限成功,给出再次点击图片保存到相册的提示。')
        }else{
            console.log('获取权限失败,给出不给权限就无法正常使用的提示')
        }
    }
})

image.png

 

这里有一个报错,我们的代码里

settingdata.authSetting.scope.writePhotosAlbum这样的取值猛地一看并没有错误,这也是一个比较容易犯的一个错误,可能觉得没有错,后面的scope.writePhotosAlbum对应图中红框中的属性名。但是按程序理解的话,上面的数据结构如下:

settingdata:{
  authSetting:{
    scope:{
      writePhotosAlbum:false
    }
  }  
}

所以这里我们修改一下

settingdata.authSetting.scope.writePhotosAlbum,改成settingdata.authSetting[‘scope.writePhotosAlbum’]。这里就是js中的两种取值方式了,点取值和中括号取值,中括号有一个最大的有点就是中括号内可以写一个变量。
保存运行,点击图片。先直接点击关闭,再点击图片,勾选权限,再点击关闭。日志如下:

image.png


这节课的内容就到这里结束了。
感谢您的阅读。
我是莽夫,希望你开心。

目录
相关文章
|
7天前
|
小程序 前端开发 关系型数据库
uniapp跨平台框架,陪玩系统并发性能测试,小程序源码搭建开发解析
多功能一体游戏陪练、语音陪玩系统的开发涉及前期准备、技术选型、系统设计与开发及测试优化。首先,通过目标用户分析和竞品分析明确功能需求,如注册登录、预约匹配、实时语音等。技术选型上,前端采用Uni-app支持多端开发,后端选用PHP框架确保稳定性能,数据库使用MySQL保证数据一致性。系统设计阶段注重UI/UX设计和前后端开发,集成WebSocket实现语音聊天。最后,通过功能、性能和用户体验测试,确保系统的稳定性和用户满意度。
|
13天前
|
小程序 IDE PHP
圈子源码如何打包生成App小程序/开发一个圈子系统软件所需要的费用体现在哪里?
将PHP源码打包成App的过程涉及多个步骤和技术选择。以圈子源码为例,首先明确需求,确定App功能和目标用户群体,并根据需求开发小程序页面,如用户注册、圈子列表等。源码准备阶段确保源码适用于小程序开发,环境配置需安装IDE(如微信开发者工具)及依赖库。最后在IDE中打包小程序并上传至管理平台,通过审核后发布。费用方面,模板开发成本较低,定制开发则更高,具体取决于需求复杂度和第三方服务费用。
47 0
|
1月前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
|
11天前
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
14 0
|
8天前
|
小程序 前端开发 关系型数据库
基于Uniapp+php校园小程序,校园圈子论坛系统功能,校园跑腿二手交流功能设计
校园圈子论坛及综合服务平台集成了校园跑腿、兼职信息、外卖团购、闲置交换、租赁服务、表白墙等多功能模块,提供一站式校园生活解决方案。系统采用uniapp前端和PHP后端开发,支持多城市、多学校切换,配备分站式后台管理,确保稳定性和安全性。通过融云IM SDK实现即时通讯功能,增强用户互动与粘性。适用于大学校园、城市及社区圈子,满足多样化需求,提升便捷体验。
|
27天前
|
移动开发 小程序 前端开发
超详细攻略!uniapp陪玩系统,打包陪玩小程序、H5需要注意什么?
陪玩系统的打包过程涵盖APP、小程序和H5平台。APP打包需使用uni-app开发工具,配置项目信息并选择云打包;小程序打包需在微信公众平台注册账号并提交审核;H5打包则直接通过uni-app生成文件并上传至服务器。各平台需注意权限配置、代码规范及充分测试,确保应用稳定性和兼容性。
|
2月前
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
69 0
在线课堂+工具组件小程序uniapp移动端源码
|
3月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
517 3
|
3月前
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
81 0
微信小程序更新提醒uniapp
|
5月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
144 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目