• 绑定

    • uni.login 拉起Apple的登录授权,获取返回的唯一标识:res.authResult.openid
    • 请求后端服务,保存绑定状态
    • 提示:操作成功
  • 解绑
    • uni.showModal确认弹框,是否解绑
    • 请求后端服务,保存绑定状态
    • 提示:操作成功

结构

<view class="cu-list menu"><view class="cu-item arrow" v-if="showIOS" @click="boundApple"><view class="content">Apple绑定</view><view class="action"><text v-if="bindApple" class="text-gray">已绑定</text><text v-else class="text-red">去绑定</text></view></view>
</view>

逻辑

export default {name: 'BindAccount',components: {},props: {},data() {return {showIOS: isAppleLogin(),  // 是否显示iOS登录bindApple: false            // 是否绑定Apple}},created() {this.bindApple = false;          // 请求获取是否已绑定},methods: {async boundApple() {const provider = 'apple'if (this.bindApple) {// 已绑定await modal({         // 封装 uni.showModal 确认弹框title: '提示',content: '解除绑定后,将无法用Apple登录,确定要解绑吗?'})// #ifdef APP-PLUSconst system = uni.getSystemInfoSync()if (system.platform == 'ios') {plus.oauth.getServices((services) => {const providers = services.reduce((cur, next) => {cur.push(next.id);return cur}, [])const apple = services[providers.indexOf(provider)]apple.logout((res) => {console.log('解绑成功', res)}, (err) => {console.log('解绑失败', err)})})}// #endif// 请求后端服务 保存绑定状态// await ...uni.showToast({ title: '操作成功', icon: 'none' });} else {// 未绑定const res = await login(provider);    // 封装 uni.login 拉起Apple的登录授权console.log('--- openId --->', res.authResult.openid); // 唯一标识// 请求后端服务 保存绑定状态// await ...uni.showToast({ title: '操作成功', icon: 'none' });}}}
}

样式使用colorUI:ColorUI-UniApp - DCloud 插件市场

一些工具方法

/*** 是否显示iOS登录*/
export function isAppleLogin() {const systemInfo = uni.getSystemInfoSync();if (systemInfo.platform == 'ios') {let systemVersion = systemInfo.system.replace(/[^0-9\\.\\^0-9]/ig, ''); // 'iOS 14.4.2' => 14.4.2if (systemVersion && parseFloat(systemVersion) > 13) {// 操作系统版本 && 只有 iOS13+ 才显示Apple登录的选项return true;}}return false;
}
/*** 封装 uni.showModal* @param {Object} params*/
export function modal(params) {return new Promise((resolve, reject) => {uni.showModal({...params,success: (res) => {if (res.confirm) {resolve()} else {reject()}}})})
}
/*** 封装 uni.login* @param {String} provider*/
export function login(provider) {return new Promise((resolve, reject) => {uni.login({provider,success: (res) => {if (res.errMsg == 'login:ok') {resolve(res);} else {reject(res);}},fail: (err) => {reject(err);}})})
}

uniapp Apple iOS 绑定解绑相关推荐

  1. uniapp 账号登陆,账号绑定/解绑流程,躺坑

    第一次开发uniapp微信小程序,记录一下开发中遇到的流程以及坑 账号登陆 1.uni.login 获取code,在调用接口传入code获取uKey 绑定账号/解绑 1.uni.login获取code ...

  2. jquery事件绑定解绑机制源码分析

    引子 为什么Jquery能实现不传回调函数也能解绑事件?如下: $("p").on("click",function(){alert("The par ...

  3. JQuery事件绑定解绑方法小结

    常用的方法 绑定:bind().delegate().on() 解绑:unbind().undelegate().off() 此外还有live() 不过JQuery1.9及其以上版本删除了此方法 推荐 ...

  4. linux 网卡绑定解绑,网卡绑定开机绑定,关机解绑

    Linux下实现双网卡负载均衡系统环境:RHEL5根据甘肃兰州实际情况的双网卡绑定方案, 方案思路:开机绑定,关机解绑 一.建立虚拟网络接口ifcfg-bond0文件[root@yangwenjun ...

  5. 44session绑定解绑、钝化活化

    BeanListener监听绑定或者解绑 HttpSessionActivationListener,Serializable 监听钝化活化 Serializable接口拿来实现获取session里面 ...

  6. 华为云如何绑定/解绑二次验证码/虚拟MFA/谷歌身份验证器?

    工具 华为云平台 微信小程序二次验证码 方法 登陆华为云平台,点击账户名,点击"安全设置" 点击"虚拟MFA"中的"立即绑定",进行绑定 无 ...

  7. 阿里云绑定解绑第三方支付宝,淘宝账号

    阿里云上有个一直常用的很早注册的一个账号,后来支付宝登录授权又自动生成了一个账号弄成了两个账号,始终没有找到绑定和解绑支付宝账号的功能,找了人工客服,响应很神速,貌似部分用户的账号在安全设置页面账号名 ...

  8. 微信绑定/解绑设备ticket

    在微信绑定和解绑的时候需要一个ticke来进行该过程 可是一直没有获取到ticket  一直都是返回fail 后来发现原来是需要在 原来是需要初始化设备库,才能或得到ticket

  9. 安卓服务service全解,生命周期,前台服务、后台服务,启动注销、绑定解绑,注册

    全栈工程师开发手册 (作者:栾鹏) python教程全解 定义服务(服务的生命周期) 调用context.startService()时依次执行 ->onCreate()- >onStar ...

最新文章

  1. linux7 kernel.sem,centos7.4内核调优,tcp单服务器万级并发
  2. mysql show processlist info null_关于查询mysql processlist的建议
  3. java操作es聚合操作并显示其他字段_java使用elasticsearch分组进行聚合查询(group by)-项目中实际应用...
  4. python gpiozero,树莓派远程GPIO调试(Python + pigpio版)
  5. Docker小白到实战之开篇概述
  6. python菜单栏_pyqt5——菜单和工具栏
  7. Java并发编程(03):多线程并发访问,同步控制
  8. (转)C#对FTP的操作(上传,下载,重命名文件,删除文件,文件存在检查)
  9. 指定JDK版本运行Tomcat
  10. ios UI控件-导航(1)
  11. 《电子元器件的可靠性》——3.3节可靠性筛选试验
  12. html注册cab包,OCX控件打包成CAB并实现数字签名过程
  13. 塑胶模具设计相关知识
  14. python+selenium+pycharm安装
  15. 新中式风格有哪些特点?新中式风格装修有哪些注意事项?
  16. Codeforces Round #811 (Div. 3)
  17. 用AI玩55款经典游戏是什么体验?
  18. 区块链开发公司 区块链何时能产生实际价值?
  19. Spark设计理念和基本架构
  20. Git Cheat Sheet——Git的常用命令和最佳做法

热门文章

  1. 从零基础到斩获BAT算法岗offer,围观复旦大佬的秋招之路
  2. 2021年深圳盐田区绿色建筑与装配式建筑发展资金申报资助及条件,补贴200万
  3. livp后缀文件图片怎么打开,在电脑怎么打开live照片批量转换?
  4. 上榜豆瓣2020年度经管榜,让《重来3》带你逃离内卷、摆脱焦虑
  5. SpringBoot(二):详细讲解SpringBoot整合MyBatis
  6. 健康系列——如何增强免疫力
  7. web网页设计实例作业 ——电影泰坦尼克号(4页) HTML+CSS+JavaScript 学生HTML个人网页作业作品下载 个人网页设计制作 大学生个人网站作业模板 简单个人网页制作
  8. 写运维实习生第五周实习周报,包括心得体会和下周计划,多于300字
  9. 统计年鉴 excel
  10. 2021年美容师(初级)免费试题及美容师(初级)模拟试题