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

  • 小规模纳税人税收优惠2023
  • 增值税申报表出口退税
  • 中小企业免税证明
  • 建筑公司核定征收是什么意思
  • 税务1236600短信
  • 非税收入如何审查
  • 出差车费报销申请怎么写
  • 增值税专用发票几个点
  • 人力资源代缴社保合法吗
  • 报关单金额大于合同金额
  • 收到微信公众号退款怎么做账
  • 预收账款核销的流程
  • 管理费用纳税调增账务处理
  • 固定资产折旧方法可以变更吗
  • 制冷设备增值税税率
  • 金税盘用户管理是灰色不能点击
  • 计提水电费是什么凭证
  • 原始凭证的基本内容包括会计科目吗
  • 工资本月计提下月发放,个税如何计算做账
  • 销售收入增加会导致哪些变动
  • 租房税收缴款书在哪里打印
  • flash动画导出视频有水印吗
  • 购进材料是进项税还是销项税
  • 少数股东持股比例
  • 合并报表的收入是相加吗
  • 赠与合同的法定撤销和任意撤销
  • 在linux操作系统中
  • win10任务栏显示年月日
  • php变量底层实现
  • 房产税的会计科目怎么做
  • 为什么把收入进行舞弊假定
  • 结转本月收入类账户到本年利润
  • 车辆运输费计入什么科目
  • php__call
  • 非货币性资产投资特殊性税务处理
  • element组件的二次封装注册
  • laravel创建项目
  • 基于Laravel5.4实现多字段登录功能方法示例
  • 北极野生动物
  • 气象数据32766
  • vue环境搭建及配置简书
  • JavaScript数组长度
  • yolov3输出是什么
  • 学python真的好就业吗
  • 信托保障基金怎么赎回
  • 纳税人兼营不同税率
  • 工业企业变压器容量费用
  • inner join用法示例
  • 没有进项票开了销项票后期有了进项票可以吗
  • 企业筹建期间可以上市吗
  • 营业税金及附加计入什么科目
  • 金蝶财务软件怎么冲销费用
  • 请培训老师的费用怎么处理
  • 善意取得虚开增值税专用发票处理
  • 公司房租发票是法人名字能入账吗安全吗
  • 承兑贴现个人违法吗
  • 双倍余额递减法计提折旧公式
  • 一般纳税人购进税控设备如何抵扣
  • 餐饮业可以开具免税发票吗
  • 长期挂账的其他应付款税务风险
  • 小微企业增值税起征点是多少
  • 应收票据和应付票据的区别
  • 数据库性能优化方法论和最佳实践
  • 虚拟机的ubuntu
  • 重装win7系统后鼠标键盘不能用
  • win8 cmd在哪
  • win7游戏打开没反应
  • Win7开机就蓝屏
  • activity传递数据
  • vmwareUbuntu虚拟机硬盘扩容
  • shell自动化
  • 批处理for命令修改后缀名
  • 网页制作范例
  • Unity 使用WWW类同步加载资源
  • web前端网页设计师
  • 如何用python编写脚本处理数据
  • express 前后端分离
  • jQuery+Ajax实现限制查询间隔的方法
  • 冲红和红冲的区别
  • 进口退税能退税吗现在
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设