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

  • 递延所得税负债是什么科目
  • 普通发票税额没有打印全可以用么
  • 小规模纳税人是季报还是月报
  • 发票旁边的孔能撕吗
  • 2019年一季度季报怎样填写
  • 企业所得税申报表在哪里查询
  • 固定资产计入了主营业务成本,该怎么办
  • 年度财务报表和季度财务报表一样吗
  • 社保基数与工资不符
  • 销售金银首饰交什么税
  • 研究开发费用的归集
  • 购买润滑油分录
  • 车过户怎么处理
  • 废弃土地的使用年限
  • 被投资单位提取盈余公积权益法
  • 收到政府补贴现金流量表怎么填
  • 购买车间用的材料怎么做分录
  • 增值税税负率计算包含附加税吗
  • 车辆增值税抵扣多少点
  • 列举20种不征增值税产品
  • 专用发票退回
  • 以销定产 以产定销
  • 信用卡购物消费怎么算
  • 出口佣金比例
  • mac怎么安装dmg软件
  • 违建罚款了还算违建吗
  • 华为手机找回删除的通讯录号码
  • linux怎么创建主页文件
  • 收境外汇款时怎么操作
  • chcfg.exe是什么
  • php读取txt内容
  • 其他应付款不需要支付的怎么处理,预算会计
  • 没有抵扣联可以作废吗
  • thinkphp ajaxfileupload实现异步上传图片的示例
  • 公司注销后虚开能查吗
  • html和css介绍
  • thinkphp pathinfo
  • 政府补助可以挂账吗
  • phpcms安装无法连接数据库服务器
  • SQL(MSSQLSERVER)服务启动错误代码3414的解决方法
  • 差旅费报销金额大于实际发生金额
  • 个体工商户具体工作内容怎么写
  • 残保金相关内容有哪些
  • 税务查账后如何结转
  • 财务报表上期金额是指什么意思
  • 一次性加速折旧考虑残值吗
  • 待报解预算收入是什么
  • 其他非流动资产是会计科目吗
  • 出口退税率为0的账务处理
  • 售后租回交易的表述
  • 企业资产负债表怎么做
  • 冲销以前月份的凭证
  • 生产线计提折旧是否会减少现金流
  • 公益性捐赠全额扣除,企业所得税
  • 生产型企业账务处理方法
  • 利润表增加,资产负债表减少怎么回事
  • win7系统设置打印机共享
  • xp怎么删除多余的操作系统
  • rds是啥
  • win7 word
  • java.exe是指
  • 微软何时推出win10
  • win10地理位置
  • win7系统开机黑屏只有鼠标且打不开任务管理器
  • linux的命令行怎么打开
  • eclipse怎么装插件
  • Android游戏开发打砖块
  • 铁嘴王指什么动物
  • cocos2d官网
  • msvc命令行
  • css3兼容性问题
  • node.js怎么样
  • vue-cli使用
  • centos6.7安装问题
  • javascript简述
  • javascript编程语言
  • js合并字符串
  • 江苏电子税务局社保缴费打印
  • 土地规划资质业务范围
  • 残疾人个体工商户补贴
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设