业务需求:

需要使用微信小程序授权获取手机号直接进行登陆操作,后端没有存session_key,也就是说我们服务端的登录态跟微信只有第一次登陆解析手机号的时候有关联,所以这里没有使用wx.checkSession去检查微信的登录态

涉及技术:

  1. wx.login(Object object)
    文档:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html

  2. phonenumber.getPhoneNumber
    文档:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/phonenumber/phonenumber.getPhoneNumber.html


那么坑来了!!

坑点:

getPhoneNumber只能在button按钮上触发,并且需要使用wx.login换取的code换取用户手机号。 每个code只能使用一次,code的有效期为5min

踩坑之路:

  1. 因为需要提前获取code,所以我一开始的时候为了确保在点击获取手机号按钮之前已经有code,于是在onLoad里面获取了code并且保存了下来。问题来了:用户如果5分钟后还没登陆呢??那我这个code不是永远登陆不上了吗?总不能在后端调用微信提示错误让用户再点一次吧,体验不好,下一个
  2. 把wx.login放在了onShow里面,这样每次到这个页面又可以更新code了哈哈哈,但是上线之后每天慌兮兮,毕竟在这个页面停留5分钟以上还是会过期,果然客户那边偶尔还是会提示登陆失败,还是得换方式。
  3. 既然官方说需要确保在登陆时再获取code(文档没看到,我也不知道哪里查的时候看到的),那我就写到获取手机号里面,用同步写法,这不就每次都是最新的code去换手机号了吗,于是我本地测了几次,清空缓存之后去获取并登陆,没有一点问题。本以为已经成功了,没想到让后端把自己的token删了之后重新登陆微信那边就解析失败了,再登陆一次又好了,时好时坏,还以为是后端缓存的问题,明明本地清了开发工具的缓存每次登陆都是好的,于是开始百度:
    果然有跟我一样的情况,在评论区看到了希望:

    链接:https://developers.weixin.qq.com/community/develop/doc/0004aa601f4c804fab798081e51400?_at=1572269536143&ivk_sa=1024320u
    原来需要在getPhoneNumber之前就获取code(我咋看文档啥都不知道呢??看来是我读文档的方式不对。。),在里面获取会导致session_key刷新,所以后端去请求微信的时候肯定就不匹配了,是我冤枉他了。
    4.那又回到了最初的远点,我又要提前去获取code,难道我要写定时器去刷新code。没登陆就一直刷新吗?这也太鬼畜了,于是我又去百度了:
    皇天不负百度人,我终于找到了一个大佬的回答:

    链接:https://developers.weixin.qq.com/community/develop/doc/000a4646914540cfc23b55ca651000

终于,参照大佬的写法后,总算是解决这个心头大患,不会每天担惊受怕了真好(卑微Orz)

微信小程序登陆踩坑记录相关推荐

  1. 微信小程序 NFC 踩坑记录

    需求 读取URL 写入URL 操作流程 一.读取 1. 获取NFC适配器实例 this.NFCAdapter = wx.getNFCAdapter() 2. 开始监听贴卡 this.NFCAdapte ...

  2. 微信小程序开发踩坑日记

    2017.12.29  踩坑记录 引用图片名称不要使用中文,尽量使用中文命名,IDE中图片显示无异样,手机上图片可能出现不显示的情况. 2018.1.5  踩坑记录 微信小程序设置元素满屏,横向直接w ...

  3. 微信小程序入门踩坑记(妥妥的干货,新手快快看过来)

    初次上手微信小程序,各种踩坑各种百度,草草扫过官网的文字,呃....表示记不住不想看,然后看了一本入门基础, 诺,就这本啦(链接:https://pan.baidu.com/s/15hKlDNpowU ...

  4. 微信小程序开发踩坑合集

    微信搜索:凯小白学编程   回复 小程序   领取1000套小程序源码 本文分享一下开发小程序是遇到的一些问题.展示了曾经开发过的两个小程序中遇到的坑 下一篇文章预告:<Maven入门> ...

  5. 微信小程序开发踩坑经验——小蜗社群

    2019独角兽企业重金招聘Python工程师标准>>> 之前遇到并且解决的坑,这边也渐渐忘记了,在这里就不列出来了-- 1.wx.redirectTo和wx.navigateTo   ...

  6. 微信小程序开发采坑记录1

    问题1: 在微信小程序开发过程中,在获取userinfo或其他异步处理函数的过程中采用this碰到一些问题,问题如下: 我的login的success回调函数如下: success: function ...

  7. 微信小程序——日常踩坑(wx.pageScrollTo滚动时有抖动问题)

    在小程序的开发过程中,有个功能是点击后需要往view层中添加数据内容,在添加后需要将内容滚动到最下面一条,以便有更好的用户体验. 开始是选择了使用wx.pageScrollTo接口,通过获取当前vie ...

  8. 【浙政钉】微信-专有钉钉小程序-开发踩坑实记

    文章目录 ⭐[浙政钉]微信-专有钉钉小程序-开发踩坑实记 ⭐ 创建项目 ⭐ 转化方案 ⭐ 政务钉钉调试 ⭐ 上传发布 ⭐[浙政钉]微信-专有钉钉小程序-开发踩坑实记 最近有个需求,要将微信小程序转为浙 ...

  9. PHP —— 用 ThinkPHP5.0 实现微信小程序登陆

    PHP -- 用 ThinkPHP5.0 实现微信小程序登陆 <工欲善其事,必先利其器> 大家好,之前学习了 原生 PHP 和框架,今天我们运用框架 TP5.0 来实现一下微信小程序的用户 ...

  10. 微信小程序初步入坑指南

    微信小程序初步入坑小指南 安装工具 developers.weixin.qq.com/miniprogram- 打开链接下载小程序云开发 app.json 为json格式的文件,为一个配置文件,属于全 ...

最新文章

  1. 使用ISA2004发布多个Web站点之二
  2. FileNotFoundError: Could not find module 'xxx.dll'. Try using the full path with constructor syntax.
  3. 常用网络故障集锦,收藏备用
  4. 使用SmsManager服务群发短信
  5. LeetCode 1796. 字符串中第二大的数字
  6. EL表达式和JSTL标签的区别
  7. 在搜索框自动输入文本_【Zotero文档翻译】管理篇:搜索
  8. android百分比布局失效,Android 百分比布局库【原创】
  9. mysql5.0 mac_Mac OS X下MySQL 5.0的默认连接数
  10. (cljs/run-at (JSVM. :all) 一次说白DataType、Record和Protocol) 1
  11. 细胞亚器互作之细胞代谢调节液泡与线粒体的接触位Cellular Metabolism Regulates Contact Sites between Vacuoles and Mitochondria
  12. android fastboot 工具,fastboot工具中文帮助文档
  13. Android上Excel编辑器,Excel表格编辑app
  14. 使用Transformer学习动态多层次的交通时空特征
  15. 突破蓝牙壁垒:aptX技术完美解决无线音频的延时问题
  16. 蓝凌生态OA,重新定义中大型企业数字化办公
  17. 2n 用c语言编程程序,用C语言编写程序.ppt
  18. Android压缩图片和libjpeg库
  19. java语言基础 : 初识计算机和Java语言-----java初识之路
  20. 索尼M36h怎么刷第三方recovery?

热门文章

  1. 【滤波器】基于多种滤波器实现信号去噪含Matlab源码
  2. pycharm的python_stubs
  3. bzoj 1260涂色 题解
  4. 无线认证 服务器是怎么回事,无线wifi认证服务器参数设置方法是什么
  5. PostMan 调用 Auth2.0 获取Token 报错问题总结
  6. 2020抖音最新上热门技巧你知道多少?
  7. nested exception is java.lang.NumberFormatException: For input string: NaN
  8. CO-PA: 获利能力分析配置和业务实践
  9. sqlite3:深入理解sqlite3_stmt 机制
  10. Java 标识符的命名规则与规范