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

  • iphone13怎么设置自动息屏(iphone13怎么设置来电铃声)

    iphone13怎么设置自动息屏(iphone13怎么设置来电铃声)

  • 微信免提怎么打开(微信如何使用免提)

    微信免提怎么打开(微信如何使用免提)

  • 如何在百度发帖(如何在百度发帖子做自媒体)

    如何在百度发帖(如何在百度发帖子做自媒体)

  • 苹果11收不到短信是怎么回事(苹果11收不到短信怎么回事)

    苹果11收不到短信是怎么回事(苹果11收不到短信怎么回事)

  • 卡贴机有锁和无锁的区别(卡贴机有锁跟无锁有什么区别)

    卡贴机有锁和无锁的区别(卡贴机有锁跟无锁有什么区别)

  • 一段文字怎样发朋友圈(一段文字怎样发朋友圈视频教程)

    一段文字怎样发朋友圈(一段文字怎样发朋友圈视频教程)

  • 怎么查找淘宝历史订单(怎么查找淘宝历史评价)

    怎么查找淘宝历史订单(怎么查找淘宝历史评价)

  • 蓝牙耳机自动播放音乐怎么关闭(蓝牙耳机自动播放酷狗音乐怎么关闭)

    蓝牙耳机自动播放音乐怎么关闭(蓝牙耳机自动播放酷狗音乐怎么关闭)

  • wifi慢是什么原因(wifi 很慢)

    wifi慢是什么原因(wifi 很慢)

  • 键盘双模和单模有什么区别(键盘双模单模的区别)

    键盘双模和单模有什么区别(键盘双模单模的区别)

  • 苹果j/a是什么版本(苹果ja是什么版本)

    苹果j/a是什么版本(苹果ja是什么版本)

  • 手机放洗衣机洗了怎么办(手机放洗衣机洗了有救吗)

    手机放洗衣机洗了怎么办(手机放洗衣机洗了有救吗)

  • 微软公司开发的操作系统有哪些(office是由哪国的微软公司开发的)

    微软公司开发的操作系统有哪些(office是由哪国的微软公司开发的)

  • 哪一款ipad能插内存卡(哪款ipad可以插u盘)

    哪一款ipad能插内存卡(哪款ipad可以插u盘)

  • linkedin可以在中国用吗(linkedin vhmed)

    linkedin可以在中国用吗(linkedin vhmed)

  • 与微指令的执行周期对应的是(微指令和指令的区别)

    与微指令的执行周期对应的是(微指令和指令的区别)

  • 手机卡欠费多久会被注销(手机卡欠费多久会停机)

    手机卡欠费多久会被注销(手机卡欠费多久会停机)

  • ip地址怎么改(ip地址怎么改到别的城市)

    ip地址怎么改(ip地址怎么改到别的城市)

  • 微信被禁言是啥情况(微信被禁言是啥状态)

    微信被禁言是啥情况(微信被禁言是啥状态)

  • 华为怎么看电子保修卡(华为怎么看电子三包激活时间)

    华为怎么看电子保修卡(华为怎么看电子三包激活时间)

  • 接电话录音在哪里找(接电话录音在哪里找到可以把它删掉,手机oq)

    接电话录音在哪里找(接电话录音在哪里找到可以把它删掉,手机oq)

  • word2010设置页码奇偶不同(word2010设置页码格式对话框)

    word2010设置页码奇偶不同(word2010设置页码格式对话框)

  • js监听页面或元素scroll事件,滚动到底部或顶部(js监听地址栏)

    js监听页面或元素scroll事件,滚动到底部或顶部(js监听地址栏)

  • 百合花怎么养殖(百合花怎么养殖简单)

    百合花怎么养殖(百合花怎么养殖简单)

  • Segment Anything Model (SAM)——分割一切,具有预测提示输入的图像分割实践(segment anything model github)

    Segment Anything Model (SAM)——分割一切,具有预测提示输入的图像分割实践(segment anything model github)

  • 税务机关内部控制措施
  • 递延收益属于利息收入吗
  • 打印机费用是属于管理费用吗
  • 售后回购的增值税税率
  • 当买方违约时,卖方可以得到哪些补救?
  • 外贸业务收境外人民币
  • 你觉得微信提现收费合理吗?
  • 过路费是地税还是国税
  • 年终奖和当月工资合并申报税
  • 增值税发票遗失证明
  • 人工费开专票最多能开几个点的
  • 报税报错了怎么办?
  • 子公司注销投资收益是否纳税合并层面
  • 差旅费未及时报销说明怎么写
  • 企业所得税减免所得税额怎么算
  • 税收理财跟税收筹划有什么区别?
  • 加权平均数是什么意思的权
  • 小规模企业核定征收
  • 社保已申报但未缴费有什么影响
  • 销售收入净额与销售收入的区别
  • 管理费用进项税额转出会计分录
  • 在win10中怎么从edge旧ie浏览器
  • win7更改电脑设置在哪里
  • 如何玩faceit
  • 设置u盘优先启动怎么设置
  • docker 使用教程
  • php数组可以使用哪些键名
  • pos机刷卡怎么做账务处理
  • 原材料的运费计入什么科目
  • vue数据实时更新
  • PHP:is_uploaded_file()的用法_Filesystem函数
  • 为什么税前利润加可抵扣暂时性差异
  • php数组函数面试题
  • php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
  • 解决谷歌浏览器自动添加书签问题
  • 注意力机制工作原理
  • 购买完服务器之后要怎么做
  • 汇编语言a命令怎么用
  • Python中tkinter的 Variable类
  • python中切片用法
  • 缴纳残保金的计税依据是什么
  • 土地出让金抵减增值税账务处理
  • 税号里面的0和O有区别吗
  • 给客户的客户开普票算不算虚开
  • 销售商品返还现金
  • 开办费账务处理实操案例
  • 增值税起征点有多少
  • 企业自建房屋建设方案
  • 保理融资的费用由谁承担
  • 个人借款产生的利息怎么计算的
  • 销售产品收取的价款
  • 借贷不平衡是什么意思
  • 支付给外包公司的工资和保险费
  • sql server 获取今天的数据
  • 电脑操作系统win7
  • xp windows功能在哪里
  • centos安装图形oracle11g
  • winpup32.exe - winpup32是什么进程 什么意思
  • macbook key
  • linux更新内核的好处
  • 如何让xp系统崩溃
  • win8安全和维护在哪
  • 防止非法使用计算机,可口令
  • windos10正式版
  • win10预览体验win11
  • ExtJS 2.0实用简明教程之应用ExtJS
  • jquerymobile
  • android:ellipsize="marquee"
  • 如何修改android studio的下载路径
  • js移动到指定位置
  • jquery显示图片
  • unity3d android 插件
  • javascript函数
  • python如何获取
  • javascript电商项目
  • 深圳如何打印个人征信
  • 徐州房产过户手续流程
  • 财税方面的问题有什么
  • 实收资本印花税税率多少
  • 小规模纳税人收什么税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设