在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
今天看到一个微信小程序 wepy 框架的获取用户信息授权, 收录下,方便以后用的上。 在wepy里使用进行小程序页面授权,里面包含了用户点击取消的重新授权方案: //auth.js /* * @Author: Porco_Mar * @Date: 2018-04-11 15:49:55 * @Last Modified by: Porco_Mar * @Last Modified time: 2018-04-18 10:43:36 */ import wepy from 'wepy' export const _timer = (context) => { return new Promise((resolve, reject) => { let _timer = null; clearInterval(_timer); _timer = setInterval(() =>{ resolve(author(context)) },500) context.data.timer = _timer; }) } export const author = (context) => { return new Promise((resolve,reject) => { var that = context; wepy.getUserInfo({ success: (res) =>{ var userInfo = res.userInfo; that.data.userInfo = userInfo; resolve(res.userInfo) }, fail: (res) =>{ console.log('.......getUserInfo fail.........') clearInterval(context.data.timer) wepy.showModal({ title: '警告', content: '您点击了拒绝授权,将无法正常显示个人信息,点击确定重新获取授权。', success:function(res){ if (res.confirm) { wepy.openSetting({ success: (res) => { if (res.authSetting["scope.userInfo"] || res.authSetting["scope.userLocation"]){////如果用户重新同意了授权登录 wepy.getUserInfo({ success:function(res){ resolve(res.userInfo) that.$parent.globalData.userInfo = res.userInfo; } }) } },fail: function(res){ resolve({'avatarUrl':'','nickName':'翠花'}) console.log('没有选择授权') } }) }else{ console.log('还是不同意授权') } } }) }, complete: function (res){ } }) }) } let isBoolen = true; export const location = (context) => { return new Promise((resolve, reject) => { if(context.$parent.globalData.location != null){ resolve(context.$parent.globalData.location) console.log('已获取location') }else{ console.log('没有获取到location ') wepy.getSetting({ success(res) { console.log(res) if(!res.authSetting['scope.userLocation']) { wx.showModal({ title: '温馨提醒', content: '需要获取您的地理位置才能使用小程序', cancelText: '不使用', confirmText: '获取位置', success: function(res) { if(res.confirm) { getLocation(context).then((res) => { // console.log(res) if (res.code == 1){ if(isBoolen){ //第一次不执行 isBoolen = false; }else{ wepy.openSetting({ // 点击自带取消定位健会调用这个面板 success: (res) => { if (res.authSetting["scope.userLocation"]){////如果用户在面板重新同意了授权地理位置 console.log('--有了scope.userLocation--') resolve(getLocation(context)) //点击面板后再次调用getLocation返回参数 } },fail: function(res){ console.log('--没有scope.userLocation--') } }) } }else{ resolve(getLocation(context)) } }) } else if(res.cancel) { //resolve(getLocation(context)) //不做任何操作 } } }) } } }) } }) } export const getLocation = (context) => { return new Promise((resolve, reject) => { wx.getLocation({ type: 'wgs84', success: function(res) { var latitude = res.latitude var longitude = res.longitude var speed = res.speed var accuracy = res.accuracy context.$parent.globalData.location = {'code': 0, 'latitude':latitude, 'longitude':longitude, 'speed':speed, 'accuracy':accuracy} resolve(context.$parent.globalData.location) }, fail: function(res){ resolve({'code': 1, 'latitude':'', 'longitude':'', 'speed':'', 'accuracy':''}) } }) }) } 引用页: // index.wepy import wepy from 'wepy' import {_timer, author, location} from '../utils/auth' onShow() { let globalDt = this.$parent.globalData if(globalDt.userInfo.nickName && globalDt.userInfo.avatarUrl){ this.userInfo = globalDt.userInfo; }else{ this.getValue(); // 获取userInfo } if(globalDt.location === null){ this.getLt(this); // 获取地理位置 }else{ console.log('当前页面获取过location了') //console.log(globalDt.location) this.location = globalDt.location; } } async getValue () { const datam = await _timer(this) console.log(datam) this.userInfo = datam; this.$apply(); } async getLt (context) { const local = await location(context) console.log(local) this.location = local; this.$apply() }
|
请发表评论