
假设首页有个扫描按钮,点击后正常情况直接进入扫描页面。但是如果用户先前已经拒绝授权使用camera了,就需要引导用户进入授权设置页面。步骤:
1、先通过getSetting->authSetting对应的'scopecamera'获取camera授权状态,如果第一次用,还未授权,则结果res里面不包含'scopecamera',也就是取到undefined;反过来说,结果为undefined时,表示还没询问授权;如果返回true,表示用户已经同意授权;如果结果为false,表示已经询问用户授权,且用户已经拒绝授权。
2、用户拒绝授权之后,通过wxopenSetting打开授权设置页面,可让用户重新设置授权信息。
微信小程序对于用户信息获取进行了接口调整。调用 wxgetUserInfo(Object object) 不会再由d窗授权提示。在已授权时,可以直接获取用户信息;否则则直接进入 fail 回调函数。
用户的授权状态可以用 wxgetSetting() 接口的请求的结果
resauthSetting['scopeuserInfo'] 来判断。
那么在接口调整后,再进行授权登录则需要通过 open-data 来实现。
注:如果用户微信版本不支持open-data,需要提示用户升级。这次接口的调整实际上使得按一次d窗中的授权按钮即可授权的 *** 作变成了需要按两次,并且需要额外设计授权页面或者在主页先进行一次d窗引导用户授权。实际上更加繁琐。
使用wxgetUserInfo(Object object),调用前需要 用户授权 scopeuserInfo。
示例代码
// 必须是在用户已经授权的情况下调用
wxgetUserInfo({
success: function(res) {
var userInfo = resuserInfo
var nickName = userInfonickName
var avatarUrl = userInfoavatarUrl
var gender = userInfogender //性别 0:未知、1:男、2:女
var province = userInfoprovince
var city = userInfocity
var country = userInfocountry
}
})
扩展资料
小程序用户信息组件示例代码
Page({
data: {
canIUse: wxcanIUse('buttonopen-typegetUserInfo')
},
onLoad: function() {
// 查看是否授权
wxgetSetting({
success (res){
if (resauthSetting['scopeuserInfo']) {
// 已经授权,可以直接调用 getUserInfo 获取头像昵称
wxgetUserInfo({
success: function(res) {
consolelog(resuserInfo)
}
})
}
}
})
},
bindGetUserInfo (e) {
consolelog(edetailuserInfo)
}
})
参考资料:
wxgetSetting()会得到小程序的授权情况,如果授权失败给用户提示,要求用户打开地图请求的权限,wxopenSetting()
pagejs
Page({data: {},
onLoad() {
},
onShow() {
},
chooseAddress(e) { // button 绑定一个tap事件,指向这个方法
wxgetSetting({
success(res) {
if (resauthSetting['scopeuserLocation']) { // resauthSetting['scopeuserLocation'] 等于true就是用户成功授权了
wxchooseLocation()
} else { // 没有授权过的打开wxopenSetting()
wxopenSetting({
success(res) { //授权成功 },
fail(res) { //授权失败,例如直接点击了返回 }
})
}
}
})
}
})
获取用户的当前设置。 返回值中只会出现小程序已经向用户请求过的 权限 。
返回值:请求过的权限可以通过 resauthSetting 拿到,
用户是否授权通过 resauthSetting[scopeuserInfo] 可以判断
{scopeuserInfo:true} 授权为true
实际开发中可以在onload生命周期函数中先wxgetSetting()获取用户请求过的权限,然后判断用户是否授权(如果resauthSetting[scopeuserInfo]为true),如果授权则可以直接获取用户信息(wxgetUserInfo()),获取用户信息后可以显示微信名和微信头像
多次拒绝登录和允许登录
微信小程序的登录获取用户信息,是通过微信d出窗口,用户可点击允许 和拒绝两个按钮,点击允许,则获取用户信息登录成功,若点击拒绝,则获取失败,可通过二次请求调用d起获取用户信息窗口。
具体代码如下:
//appjs
App({
onLaunch: function () {
//调用API从本地缓存中获取数据
var logs = wxgetStorageSync('logs') || [];
logsunshift(Datenow());
wxsetStorageSync('logs', logs);
consolelog('logs',logs);
},
getUserInfo:function(cb){
var that = this;
//调用登录接口
function getOpenid(backMsg){
thatglobalDatauserInfo = backMsguserInfo;
thatglobalDataencryptedData = backMsgencryptedData;
thatglobalDataiv = backMsgiv;
thatglobalDatalogin = true;
consolelog(thatglobalDatacode);
wxrequest({
url:thatlocalUrl+'Login/sendCodeLogin',
data:{
code:thatglobalDatacode,
encryptedData: backMsgencryptedData,
iv:backMsgiv
},
success:function(openData){
consolelog('返回openid',openData,openDatadata);
if(openDatadatacode==1001){
thatglobalDataopenid = openDatadatadataopenid;
wxsetStorageSync('openid',thatglobalDataopenid);
wxsetStorageSync('userInfo',thatglobalDatauserInfo);
wxsetStorageSync('isManager', openDatadatadataisManager);
wxshowToast({
title: '登录成功',
icon: 'success',
duration: 500
});
typeof cb == "function" && cb(thatglobalDatauserInfo);
}else{
wxshowLoading({
title: '登录失败'
});
setTimeout(function () {
wxhideLoading();
}, 500)
}
}
})
}
wxlogin({
success: function (msg) {
consolelog('code',msg);
if(msgcode){
thatglobalDatacode = msgcode;
if(thatglobalDatalogin==false){
wxopenSetting({
success: function (data) {
if(data) {
if (dataauthSetting["scopeuserInfo"] == true) {
//loginStatus = true;
wxgetUserInfo({
withCredentials: false,
success: function (res) {
consolelog('第二次成功',res);
getOpenid(res);
},
fail: function (res) {
thatglobalDatalogin = false;
consolelog('二次失败',res);
}
});
}else{
thatglobalDatalogin = false;
consolelog('二次失败02');
}
}
},
fail: function () {
consoleinfo("设置失败返回数据");
}
});
}else{
wxgetUserInfo({
success: function (res) {
consolelog('第一次成功',res);
getOpenid(res);
},fail:function(msg){
thatglobalDatalogin = false;
consolelog('第一次失败',msg);
}
})
}
}
},
fail:function(res){
consolelog(res);
}
})
},
globalData:{
userInfo:null,
encryptedData:null,
iv:null,
openid:null,
code:null
}
});
以上就是关于小程序用户拒绝授权后全部的内容,包括:小程序用户拒绝授权后、微信小程序用户信息获取接口的调整、微信小程序的怎么获取用户微信id等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)