简化微信小程序用户授权
2020/3/20 11:01:46
本文主要是介绍简化微信小程序用户授权,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在开发小程序中,获取用户授权是一个繁琐的步骤,觉得不错,请点赞哦
相关API
wx.getSetting({ success (res) { console.log(res.authSetting) // res.authSetting = { // "scope.userInfo": true, // "scope.userLocation": true // } } }) 复制代码
// 可以通过 wx.getSetting 先查询一下用户是否授权了 "scope.record" 这个 scope wx.getSetting({ success(res) { if (!res.authSetting['scope.record']) { wx.authorize({ scope: 'scope.record', success () { // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问 wx.startRecord() } }) } } }) 复制代码
Promisify相关API
微信小程序的API都是回调函数,一不小心就是回调地狱。我们可以用Promise封装下
const promisify = fn=>(arg={})=>new Promise((resolve,reject)=>{ arg.success=function(res){ resolve(res) } arg.fail=function(err){ reject(err) } fn(arg) }) 复制代码
使用:
const wxGetSetting = promisify(wx.getSetting) wxGetSetting().then(res=>console.log(res)) 复制代码
解释
// promisify接受一个fn函数 const promisify = function(fn){ // promisify返回一个函数,这个函数可以接受一个arg参数 // arg默认是空对象,因为微信小程序api都是接受一个对象参数的 return function(arg={}){ // 该参数执行后,返回一个promise对象 return new Promise((resolve,reject)=>{ // 给参数加上success和fail arg.success=function(res){ resolve(res) } arg.fail=function(fail){ reject(fail) } // 执行fn fn(arg)// fn是传进来的wx.getSetting }) } } 复制代码
简化授权
const wxGetSetting = promisify(wx.getSetting) const wxAuthorize = promisify(wx.authorize) function myAuthorize(authSetting) { return new Promise((resolve, reject) => { wxGetSetting().then(res => { if (res.authSetting[authSetting]) { resolve("ok") } else { return wxAuthorize({ scope: authSetting }).then(res => { resolve("ok") }).catch(err => { reject("fail") }) } }) }) } 复制代码
使用:
myAuthorize("scope.userLocation") .then(res=>console.log(res)) .catch(err=>console.log(err)) 复制代码
结语
作者:胡志武
时间:2020/03/19
各位看官,如果觉得文章不错,请点个赞哦,如果有错漏处,请指正,哈哈,谢谢
这篇关于简化微信小程序用户授权的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-30实现小程序内部扫码签到和微信扫一扫签到-icode9专业技术文章分享
- 2024-06-30微信内调用扫码扫描小程序码如何解析链接-icode9专业技术文章分享
- 2024-06-30小程序码链接加密了如何解-icode9专业技术文章分享
- 2024-05-302024年最新版云开发cms开通步骤,开始开发微信小程序前的准备工作,认真看完奥!
- 2024-03-30微信小程序的网络设置,及网络请求:wx.request(OBJECT)
- 2024-01-22基于taro搭建小程序多项目框架
- 2024-01-13小程序开发:在插件市场寻找步骤条组件并二开
- 2024-01-05钉钉小程序生态—企业机器人加互动卡片,改善用户体验的开始!
- 2023-12-29【UniApp】-uni-app-打包成小程序
- 2023-12-26性能翻倍!京东亿级体量小程序优化实践