# 授权

up.getSettingup.authorizeup.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可以直接进入微服务的设置页面,引导用户手动开启授权

上次更新: 3/1/2021, 6:47:20 PM