位置: 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)(赫尔辛基哈加赫利亚大学)

  • 工会开户所需资料怎么写
  • 注册资本认缴到哪里
  • 个人所得税分摊方式月扣除金额修改
  • 企业所得税不含税价格怎么算
  • 一般纳税人增值税怎么做账务处理
  • 有限合伙企业注册资金要求
  • 开具的红字发票金税三期怎么报税?
  • 编制竣工结算的具体增减内容有哪几个方面?
  • 公司购入房产账务处理
  • 发票额度变更
  • 会务费发票要附上照片吗
  • 服装发票怎么进项抵扣
  • 还在讨论“税务金四”上线?税务和银行要联手清查单位和个人账户了!
  • 报废车辆补贴收据怎么写
  • 职业年金属于应交税费吗
  • 2021年电子税务局印花税怎么申报
  • 股东投进来的钱可以放哪个科目
  • 财务会计怎么学好
  • 固定资产清理会计处理例题
  • 增值税小规模纳税人减免增值税政策
  • 债务转为资本什么意思
  • 无法收回的款项摘要怎么写
  • 在建工程进项税可以抵扣吗
  • 总资产算不算负债
  • 旅客购买电子客票
  • 处理废料会计分录
  • PHP:oci_new_connect()的用法_Oracle函数
  • thinkphp d方法
  • 应付债券借贷
  • 外贸企业退税需要哪些资料
  • ksysslim.exe是什么
  • win7系统无法启动怎么处理
  • 前端生成pdf文件
  • PHP:imagefontwidth()的用法_GD库图像处理函数
  • 转让居民企业的股权所得交企业所得税吗
  • 承接旅游业务
  • 增值税普通发票需要交税吗
  • php读取xml文件
  • 企业所得税可以结转以后年度扣除的费用
  • 调入的无形资产记入哪里
  • 为什么那么多人考公务员
  • css获取id
  • 开源项目网站
  • thinkphp d方法
  • 如何使用php给图片命名
  • 增值税专用发票抵扣期限
  • 小规模首次申请发票张数
  • 买新车检测费
  • 跨月发票税率开错了如何处理合适?
  • 福利费需要发票吗
  • 研发产品相关专业
  • 其他货币的账面价值包括
  • 公司法人转账到公司账户
  • 出口抵减内销产品应纳税额
  • 销售未开票怎么做分录
  • 固定资产小汽车折旧怎么计提
  • 商标使用权入股要交税吗
  • 差旅费可以加计吗
  • 软件测试取费标准
  • 买货品的咨询服务有哪些
  • 企业预提费用是什么科目
  • os x10.11el capitan公测版beta5更新了什么?os x10.11el capitan公测版beta5发布下载
  • windows9预览版下载
  • centos virbr0
  • win10睡眠什么意思
  • ubuntu sshserver
  • mac系统制作
  • windows8.1界面
  • win7假死真正解决办法
  • win8windows设置在哪里
  • 英文xp系统中文语言包
  • centos查看具体版本
  • 学会这8个技巧让你做出的菜味道更好
  • lua教程书籍
  • linux保存
  • nodejs的组成
  • select ui
  • 电信电普
  • ic卡读取失败是怎么回事
  • 兰州税收优惠园在哪
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设