uniapp 授权登录及页面跳转

uniapp 授权登录

主要介绍了uniapp授权的几种方式,分别为临时登录授权、手机号授权、用户信息授权

1. 微信登录授权

微信小程序的登录逻辑发生了变化,要求开发者使用静默登录,即在用户无感知的情况下进行登录操作,不需要弹出授权窗口了。

如下所示,获取微信的临时登录凭证 code,不会弹出授权窗口了。

js 复制代码
uni.getProvider({
  // 类型为oauth,用于获取第三方登录提供商
  service: "oauth",
  success: (res) => {
    // 输出支持的第三方登录提供商列表
    if (~res.provider.indexOf("weixin")) {
      // 发起登录请求,获取临时登录凭证 code
      uni.login({
        // 登录提供商,如微信
        provider: "weixin",
        success: (loginRes) => {
          // 获取用户登录凭证
          this.handleLogin(loginRes.code);
        },
      });
    }
  },
});

2. 微信手机号授权

对于一般的用户信息,如头像、昵称等,被视为非敏感信息,以静默登录的方式进行获取。而用户的手机号等敏感信息,是需要授权的,可以通过 open-type="getPhoneNumber"属性来触发获取手机号码的授权弹框。

getPhoneNumber:获取用户手机号,可以从@getphonenumber 回调中获取到用户信息,该接口一直会弹出授权弹框,具体可查看官网:uniapp.dcloud.net.cn/component/b...

js 复制代码
<button type="default" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">获取手机号</button>

// 打开获取用户手机号的授权窗口
getPhoneNumber(e) {
  console.log('getPhoneNumber', e.detail)
  console.log(e.detail.encryptedData); // 获取加密数据
  console.log(e.detail.iv); // 获取加密算法的初始向量

  const { detail:{ code, encryptedData, iv, errMsg } } = e;
  if(errMsg === 'getPhoneNumber:ok') {
    // 获取成功,做对应操作
  }
}

3. 微信用户信息(头像、昵称)授权

可以使用uni.getUserProfile获取用户信息,如头像、昵称

该 API 对于低版本(基础库 2.10.4-2.27.0 版本),每次触发 uni.getUserProfile 才会弹出授权窗口;

我开发时,最新的基础库为 3.3.1,不会弹出授权窗口,直接获取到值了,也是静默授权状态。

js 复制代码
<button type="default" size="mini" @click="getUserInfo">获取用户信息</button>

getUserInfo(e) {
  // 获取用户信息
  uni.getUserProfile({
    desc: '获取你的昵称、头像、地区及性别',
    success: res => {
      console.log('获取你的昵称、头像',res);
    },
    fail: err => {
      console.log("拒绝了", err);
    }
  });
}

uniapp 跳转

主要介绍了 uniapp 小程序跳转的三种方式,分别为内部页面跳转、外部链接跳转、其他小程序跳转。

1. 内部页面

内部页面的跳转,可以通过如下方式:navigateTo、reLaunch、switchTab

js 复制代码
// 保留当前页面,跳转到应用内的某个页面
uni.navigateTo({ url: "/pages/home/home" });

// 关闭所有页面,打开到应用内的某个页面
uni.reLaunch({ url: "/pages/home/home" });

// 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
uni.switchTab({ url: "/pages/home/home" });

2. 外部链接

通过 webview 打开外部网站链接,web-view 是一个 web 浏览器组件,可以用来承载网页的容器。

js 复制代码
// 1. 新建pages/webview/webview.vue页面
<template>
  <web-view :src="url"></web-view>
</template>
<script>
export default {
  data() {
    return {
      url: ''
    }
  },
  onLoad(e) {
    // 使用web-view标签进行跳转
    this.url = decodeURIComponent(e.url)
  }
}
</script>

// 2. 外链跳转使用
uni.navigateTo({url: "https://www.taobao.com"})

3. 小程序 appId

通过navigateToMiniProgram可以打开其他小程序

js 复制代码
// 打开其他小程序
uni.navigateToMiniProgram({
  appId: "AppId", // 其他小程序的AppId
  path: "pages/index/index", // 其他小程序的首页路径
  extraData: {}, // 传递给其他小程序的数据
  envVersion: "release", // 其他小程序的版本(develop/trial/release)
  success(res) {
    // 打开其他小程序成功的回调函数
  },
  fail(err) {
    // 打开其他小程序失败的回调函数
  },
});
相关推荐
Mr Xu_18 小时前
UniApp 实战:深度解析 App 端自动检测与静默更新(含强制更新)
javascript·vue.js·uni-app
说给风听.19 小时前
基于 Vue3 的 UniApp 实战手册:多端开发与技能变现之路
uni-app
外派叙利亚19 小时前
uniapp canvas 自定义仪表盘 可滑动 可点击 中间区域支持自定义
前端·javascript·uni-app·html
不爱学习小趴菜19 小时前
uniapp微信小程序无法屏蔽右上角胶囊按钮(...)问题解决方案
微信小程序·小程序·uni-app
WeiAreYoung19 小时前
uni-app Xcode制作iOS谷歌广告Google Mobile Ads SDK插件
ios·uni-app
plmm烟酒僧20 小时前
《微信小程序demo开发》第一部分-编写页面逻辑
javascript·微信小程序·小程序·html·微信开发者工具·小程序开发
2501_9160088920 小时前
iOS 开发助手工具,设备信息查看、运行日志、文件管理等方面
android·ios·小程序·https·uni-app·iphone·webview
全栈小521 小时前
【小程序】微信小程序input设置readonly只读属性无效,这是怎么回事呢
微信小程序·小程序·notepad++
2501_9159214321 小时前
在没有源码的前提下,怎么对 Swift 做混淆,IPA 混淆
android·开发语言·ios·小程序·uni-app·iphone·swift
00后程序员张1 天前
对比 Ipa Guard 与 Swift Shield 在 iOS 应用安全处理中的使用差异
android·开发语言·ios·小程序·uni-app·iphone·swift