位置: IT常识 - 正文

【uni-app】小程序实现微信授权登陆(附流程图)(unigui 小程序)

编辑:rootadmin
【uni-app】小程序实现微信授权登陆(附流程图)

微信授权登陆是比较常见的一种登陆方式,今天来总结下实现流程

进入授权登陆页面

初始化调用wx.login获取登陆凭证code(用户无感知)//封装微信获取用户code,避免嵌套login() { return new Promise((resolve, reject) => { uni.login({ success(res) { resolve(res); }, fail(err) { reject(err); } }); });}

推荐整理分享【uni-app】小程序实现微信授权登陆(附流程图)(unigui 小程序),希望有所帮助,仅作参考,欢迎阅读内容。

【uni-app】小程序实现微信授权登陆(附流程图)(unigui 小程序)

文章相关热门搜索词:uni-app小程序授权登录,uni-app 微信小程序,小程序uniacid,uni-app 小程序,uni-app 小程序,uni-app 小程序,uni-t小程序,uni-t小程序,内容如对您有帮助,希望把文章链接给更多的朋友!

用登陆凭证code调用后端接口去获取用户登录态信息,包括用户在当前小程序的唯一标识(openid)、微信开放平台帐号下的唯一标识(unionid,若当前小程序已绑定到微信开放平台帐号)及本次登录的会话密钥(session_key)等(用户无感知)

async init() { //调用微信登陆 let res = await this.login() if (res.code && ['login:ok'].includes(res.errMsg)) { //后端通过code调用微信API返回openid/unionid/session_key参数, 存储起来,前端无法直接调用微信相关API let openIdRes = await getWechatOpenIdByCode({ code: res.code }) if (openIdRes.success) { let { openId, sessionKey } = openIdRes this.openId = openId this.sessionKey = sessionKey } } else { //异常处理,再次发起请求或者抛出异常 // ..... }}, 用户点击微信手机号快捷登录按钮,触发授权弹窗(需用户主动触发,不允许api主动调用),详细使用看官方文档

用户允许授权会触发getphoneNumber小程序事件获取到encryptedData, iv参数//微信授权登陆按钮<u-button open-type="getPhoneNumber" @getphonenumber="getphoneNumber">用户授权登陆</u-button>//JS部分//用户授权登陆允许后,返回encryptedData, iv参数getPhoneNumber(e) { //拿到参数后进一步去解密.... // 授权通过后轮询等待获取sessionKey响应成功 if (['getPhoneNumber:ok'].includes(e?.detail?.errMsg)) { this.handlePolling(e) }}/*** 轮询查询是否有sessionKey,防止初始化接口响应时间过长拿不到解密入参,用户解密失败*/handlePolling(e) { this.timer = setInterval(() => { if (this.sessionKey) { this.decryptDataInfo(e.detail) this.timer = null } }, 300)},调用后端解密接口,解密拿到用户的手机信息(手机号、区号、国家等)调用后端登陆接口,传入openId、用户手机号,返回登陆token完成登陆/** * 解密获取手机号码,区号 */async decryptDataInfo(detail:any) { let params = { encryptedData: detail.encryptedData, sessionKey: this.sessionKey, iv: detail.iv, appId: getLocalStorage(AppIdKey), } let res = await decryptApi(params) if (res.success) { //解密成功,获取到手机号码,区号等信息 let data = JSON.parse(res.data) // 调用后端登陆接口传入信息,完成登陆 this.loginMinor(data) } else { //....异常处理 }}

有些朋友可能觉得写的不够清晰,重新补充了个流程图

本文链接地址:https://www.jiuchutong.com/zhishi/294589.html 转载请保留说明!

上一篇:Vision Transformer 模型详解

下一篇:赫尔辛基的哈加杜鹃花公园,芬兰 (© Samuli Vainionpää/Getty Images)(赫尔辛基哈加赫利亚大学)

  • 分公司可以享受企业所得税优惠吗
  • 完税证明是可以抵扣吗
  • 委托加工应税消费品收回后直接销售
  • 按份共同保证和连带共同保证
  • 报销为什么不能多家赔付
  • 允许抵扣的进项税额分为哪几种情况
  • 季节性临时工是不是可以不上社保
  • 金税盘当月不抵扣如何做分录
  • 发票商品类别有哪几种
  • 收入纳税明细里的收入是税前还是税后
  • 个人投资者取得现金红利的过程不用支付利息税
  • 个体工商户化妆品经营范围
  • 过渡期损益会计分录
  • 已交增值税如何做账
  • 2018年所得税表
  • 生产型增值税与消费型增值税的区别在于是否允许企业
  • 贷款利息可以抵税吗
  • 营改增后还有消费税吗
  • 继承的房产出售要交20%是全额还是差额
  • 填写a201030减免所得税优惠明细怎么填
  • 物业税额
  • 房地产企业人防工程计入什么科目
  • cmos电池耗尽
  • 飞机票增值税发票可以作为报销凭证吗
  • 无法访问您可能的网络
  • win10远程桌面连接不成功
  • 电脑每次开机都要按f1怎么解决
  • macos10.15.7补充更新
  • win7旗舰版系统怎么样
  • koeids.dll
  • 败诉方支付诉讼费怎么入账
  • apache去掉php后缀
  • php 生成随机字符串
  • 增值税检查后的调账方法
  • EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
  • 免交的增值税要交所得税吗
  • 计算机视觉opencv 有什么项目
  • javaweb重点知识总结
  • 电商后台管理系统简介
  • react组件调用方法
  • cp命令复制文件到另一个目录并改名
  • 准予扣除的业务宣传费
  • 会计要离职了要注意几点
  • 补偿金是否应该上税
  • python filter dict
  • 实收资本认缴怎么做账,要做账吗
  • 核定征收方式包括哪几种
  • 哪些发票可以抵扣?
  • 税务登记如何办理
  • mysql切片
  • 个人所得税相关会计分录
  • 政府扶持国有企业
  • 可转债会计分录怎么做
  • 公司缴纳养老保险最低标准
  • 运费发票如何做分录
  • 企业注销清算报告模板
  • 已抵扣的增值税怎么做账
  • 如果非货币性资产会怎样
  • 合理损耗怎么算
  • 经营租赁不动产租赁发票开具要求
  • 企业利润分配明细表
  • 期初建账怎么做
  • 销售收入用营业收入还是营业总收入
  • 增值税购进扣税法
  • 缴纳注册资金印花税怎么做账
  • 工业增值税怎么算
  • windows导航栏在左边
  • 安装xp后win7不能用怎么办
  • dwm22.exe病毒
  • linux启动u盘制作
  • wmic命令详解
  • ssm vue
  • javaweb开发技术有哪些
  • python的cumprod
  • unity动画教程
  • ubuntu快捷键大全
  • 黑龙江国税局官网
  • 海南省地方税务局关于土地增值税清算有关问题的通知
  • 湖南电子税务局官网登录入口首页
  • 垠坤集团是属于国企吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设