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

  • 华为nova8pro怎么拍月亮(华为nova8pro怎么控制空调)

  • 看抖音直播怎么点赞(看抖音直播怎么关声音)

  • 路由器dhcp开启还是关闭(路由器dhcp开启 固定ip 电脑上不了网)

  • 苹果11感觉画质模糊怎么解决(苹果11感觉画质模糊)

  • 华为p30勿扰模式怎么设置(华为p30设置勿扰模式)

  • 手机不能视频聊天咋回事(苹果手机视频聊天时怎么录视频呢)

  • nova7支持红外吗(华为nova 7支持红外功能吗)

  • xls是excel吗(xls是啥)

  • 手机号导入的包裹是什么东西(手机号导入的包裹怎么查)

  • 微信7.0.12怎么设置深色模式(微信8.0.2怎么设置)

  • 苹果充电线不用原装的有影响吗(苹果充电线不用原装头冲上电ma)

  • 微信未授权抖音怎么办(微信未授权抖音登录失败)

  • 手机号显示未注册怎么办(手机号显示未注销怎么办)

  • 阻止此号码对方知道吗(阻止此号码对方还能发短信吗)

  • hw-100400c00充电器是哪个型号手机(hw-100400c00充电器是多少瓦的)

  • 手机只能接不能打是怎么回事(手机只能接不能打怎么办?)

  • 手机怎样建讨论组(用手机怎么建群聊)

  • 手机抖音怎么删除作品(手机抖音怎么删除关注)

  • 华为p30pro一键锁屏在哪(华为p30pro一键锁屏卸载)

  • 红米k30pro什么时候出(红米k30pro什么时候更新miui14)

  • iphonexr怎么定时开关机(苹果xr怎么定时开机)

  • ps镜像快捷键(ps中镜像快捷键)

  • 绿钻续费怎么关闭(绿钻续费怎么关苹果手机)

  • 微信发送不了语音(微信发送不了语音是什么原因)

  • 鸿蒙侧边栏应用怎么删除 侧边栏应用删除方法(鸿蒙侧边菜单)

  • 苹果macOS Sierra正式版固件如何更新?(macbook sierra)

  • Win7如何通过命令打开网络连接?(win7怎么输入命令)

  • 【Vue3】用Element Plus实现列表界面(vue3 element ui)

  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设 电脑维修 湖南楚通运网络