# 授权
up.getSetting,up.authorize,up.openSetting
页面的部分jssdk接口需要用户授权才可以调用,如获取用户信息、位置信息、运动步数信息等。
此类接口调用时:
- 如果用户未接受或拒绝过此权限,会弹窗询问用户,用户点击同意后方可调用接口;
- 如果用户已授权,可以直接调用接口;
- 如果用户已拒绝授权,则不会出现弹窗,而是直接进入接口 fail 回调。请开发者兼容用户拒绝授权的场景
// 检查授权状态,授权时返回loginCode
const checkSetting = async () => {
const setting = await getSetting();
console.log('check setting', setting);
if (setting.enableuserinfo != '1') {
const authResult = await authorize();
if (authResult.enableuserinfo == '1') {
// 已授权,进入正常业务逻辑
return getUserInfo();
} else {
throw new Error('no authorize');
}
} else {
// 已授权
return getUserInfo();
}
}
/**
* 查询用户设置
*/
const getSetting = () => {
return new Promise((resolve, reject) => {
const _success = function (result) {
resolve(result);
};
const _fail = function (fail) {
alert('fail: ' + JSON.stringify(fail));
reject(fail);
};
up.getSetting(_success, _fail);
});
};
/**
* 获取用户授权
*/
const authorize = () => {
return new Promise((resolve, reject) => {
const _success = function (result) {
resolve(result);
};
const _fail = function (fail) {
alert('fail: ' + JSON.stringify(fail));
reject(fail);
};
const para = {
authtype: 'enableuserinfo' //目前支持参数 enablelocation/enableuserinfo
};
up.authorize(_success, _fail, para);
})
};
调用up.openSetting可以直接进入微服务的设置页面,引导用户手动开启授权