从登录绑定的那些事聊起

最近参与开发的小程序2.0终于上线了。我将原项目的登录绑定,与打开跳转相关的内容整体重构了一下。在这里分享一下项目开发中登录可能遇到的问题。


首先登录功能在多数项目中都会有。
简单的说。这是用户通过一个身份标示进行授权,前端得到获取数据权限的过程。

这个身份标示可以是多样的,比如手机号与验证码,微信小程序中返回的code(获取openID),或者其他各种平台的sdk中,授权功能返回的唯一ID。有些项目也允许使用设备唯一ID(早年的各种设备唯一编码,udid,openUDID,IMEI等等)。

有些项目在设计阶段不严谨,会导致一个实际用户产生2个甚至多个账户的情况。这种情况多数由于允许多种标示进行注册(注意不是登录)造成的。

举个🌰:
app端手机号注册。
小程序端照顾用户体验,允许用户通过微信ID注册,然后绑定手机号。
当用户在2端都注册过后,再绑定手机号时,他已经注册2份用户数据。如果要进行合并,多数时候是难以实现并且容易引发各种问题。

还好,目前的项目是以手机号作为唯一标示,然后绑定微信ID的方式做的。这种方式虽然会强制用户先进行手机号登录,但至少能避免部分问题。

强烈建议使用微信系统进行登录或注册的。统一使用UnionID作为唯一ID,这是微信为开发者提供的多平台统一ID方案:包括公众号、移动应用,小程序。获取方式:点这里查看


好了,接下来回到最开始的问题,我为什么要重构之前项目的登录部分呢,当然最重要的是因为他有bug,第二是原开发者已经离开,而那部分代码实在是有些不够,额,优雅。

先简述一下这个小程序有些不寻常的登录流程。

首先,根据微信id获取是否绑定。

这看起来简直平平无奇。成功就进入app,没有绑定就进入绑定/注册流程。
但这个项目还有一个一个逻辑(已经废弃),如果用户没有订单数据,就强制登出,让他更换手机号登录。
看起来也不是很麻烦~~~重点来了

这个小程序项目的注册/绑定流程有3个页面!

如果这个情况出现在app或者h5项目中,完全没有什么问题~~因为app中用户的页面流转是完全可控的,你可以有自己的页面流转控制

但是小程序中却。。。微信的相关文档:https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/operating-mechanism.html

这里重点描述一下小程序入口的问题。小程序的入口是不固定的。用户通过不同方式进入时,路径参数中的页面就会成为小程序开启的第一个页面。同时会清除路由的历史信息(清空页面栈)!


image.png

而用户进入/退出小程序的时机是不可控的。当你的一个功能需要在多个页面间流转时,就会因为这个机制而多出很多的页面逻辑

我想小伙伴们肯定已经发现了为什么会多出很多页面逻辑
再举个🌰:
从分享中打开小程序,进入分享页-->需要登录-->登录页1-->登录页2-->用户右上角退出了小程序-->从分享中打开:
再次打开的时候如果要求用户按照刚刚的流程再走一遍实在是太不优雅。所以额外增加逻辑,如果这时用户正在登录,那么进入之前的登录流程中。

可是路由被清空了,你没法返回上一页继续登录,只能自己存储状态并跳转,而这只是流程中多种情况中的一个

一个更难吃的🌰:
从分享中打开小程序,进入分享页-->...流程1234-->登录中。。。-->用户右上角退出了小程序-->从分享中打开:

这时,出现了薛定谔的登录状态

入口页需要等待登录信息坍塌(返回),才可以进行下一步逻辑。

很多小伙伴在开发过程中不注意薛定谔状态(这只是我随便起的名字~不要在意)。很多时候我们确实不关注信息返回过程中会有什么额外逻辑。加个loading什么的~

但是在这个流程中,等待登录信息返回再进行下一步逻辑变得非常重要!
入口页需要登录信息来进行页面流转,而这个登录信息获取的接口,可能并不是在当前页面内。

在薛定谔的状态下(checking_bind/waiting_login/wait_data/...) 注册回调,代理,接受广播消息等等~~各种方案都有,选一个合适的走起

其实这不是一个多么难的技术问题。然而上一个开发小伙伴就倒在这里~~他没有在这里做额外的等待消息逻辑,导致了这个流程上出现各种问题。(酒吧上线了,回测通过了,一个顾客点了份炸酱面,酒吧炸了~)

剩下的都比较常规,不再赘述。

登录问题到此为止,但其实并不是这一篇的重点
其实想借助登录这个app 中的第一个流程,来说说需求分析这个事情。


软件开发第一(二)步

需求分析这个事情一说出来,还是感觉 平平无奇

很多小伙伴都认为其实自己做了的,只不过需求变化太快(或者是其他借口)。目前大环境来说,确实优秀的产品经理不好找。但是大部分开发小伙伴,需求分析这件事做的也都还有提升空间。

开发小伙伴么很多比较含蓄内敛,需求里模糊的内容,有些小伙伴就按照自己的想法补充,实现完成,验收~~~重做!

还有一些项目设计与平台结构不搭的情况下,开发应该给产品提出专业的意见并解释,这是一个优秀的开发人员需要做的工作。埋头写代码不是程序员的全部工作,至少对优秀的程序员来说,不是。

以这个登录流程为例,他与小程序平台的设计完全不搭。可以参考市面上多数小程序,授权登录功能都是弹窗蒙层类的实现。这个时候就应该

产品经理,拔剑吧,今天不是你死,就是!@#

上面是开玩笑的,我们要动之以情,晓之以理,再看看竞品,正常人就会做出正常的选择。

程序员也是要练口才的各位。至少参与团队开发的程序员,需要清晰明确的表达的自己观点,条理清晰,令人信服(定个小目标~)。


这个时候再说重点是不是晚了点?

说了需求分析的重要,但具体怎么做需求分析,这个事情吧一千个人有一千个多态实现,各位小伙伴也可以多多交流~~方式方法,各种工具

庞有,面向对象知道发,面向对象

面向对象的概念从计算机软件开发中提出来,到现在也已经很久了。小伙伴们耳熟能详,并且熟练使用。个人理解它不光是一种编程范式或者软件开发方法。也是我们分析需求解决问题的一种思考方式。


抽象都做不好~~怎么面向对象

面向对象第一步,就是抽象,个人认为也是最重要的一步。
多数时候我们会自动完成抽象的基础工作。

因为这就是人认识事物的基本方式之一:贴标签

快看,那有个漂亮小姐姐!

你瞬间就给这个路人抽象了几个属性
外貌:漂亮
性别:女(也许吧)
年龄:额。。不是很大?

这种自动完成的抽象一方面依靠经验(你逐步完善的世界观,价值观~还有审美),一方面流于表面(我要在心里呐喊:心灵美才是真的美~~~)

开发过程中,很多小伙伴们面对需求也是自动完成抽象,开始埋头苦干。

‘我艹,不对’(重写吧)
‘等等,好像有什么不对劲’(bug)

下面是脱离程序开发,广义的抽象,小伙伴们可以自行体会。
百度百科,抽象:https://baike.baidu.com/item/%E6%8A%BD%E8%B1%A1/9021828?fr=aladdin

(作为一个程序员,我竟然贴出了百度百科的链接,这不严谨)

做好了抽象,才有后续的封装等等~~

对事物、需求、问题。先定性,抽象出属性、状态,结构。然后再根据抽象出的内容进行分析,这就是我想与小伙伴们分享的软件开发第一步

各位开发的小伙伴们,尤其是经验值攒的不多的~~理论知识决定高度,基础牢固决定下限
小伙伴们在开发过程中遇到的问题,往往不是史无前例的,艰难的,极度复杂的逻辑问题。这些问题的解决方式,避免出现问题的做法,基本上都已经有前人总结出来。都放在了one piece~~

程序员的核心价值不是打字速度,也不是一块熟悉业务的固态硬盘,是脑花

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容