事非经过不知难
登录注册是一个相对复杂的体系——登录前的注册登录方式考量;登录过程中的条件和状态变更;登录后的账号信息呈现和更新;异地、异设备、多设备登录及账号信息同步的考量;登录账号的安全考量(token有效期);退出登录的条件与限制(退出登录/切换账号);注销账号的条件与限制等。
在真正做登录功能之前,并不知道它会有这么多“坑”,本篇就APP登录的部分环节做一些总结,仅供参考(纸上得来终觉浅,绝知此事要躬行~)
文章重点如下:
解读:
本文从实践的角度出发,介绍注册登录功能在实际设计中需要考虑的因素。功能设计方面,选取目前常见的登录方式:手机快捷登录和第三方账号登录(两者均首次登录即注册,因此不对注册功能进行详细阐述)。
我们要正确使用“登录”而不是“登陆”
具体解释可参考:登录和登陆有什么区别?到底哪个正确?
为什么要有注册登录功能
就当前的互联网产品,注册登录功能已经成为了标配,然而,真的是每个产品都一定需要这个功能吗?仔细思考,可以从用户和产品两个角度阐述登录功能的必要性:
用户:通过登录
1.建立个人空间,形成身份唯一标识,记录个人相关数据(例如阅读或者收藏记录)
2.进行账号信息同步,摆脱设备的限制(例如百度云网盘、有道云笔记等)
3.使用产品的某些功能(例如淘宝发起购买)
4.进行个人隐私安全和保护(例如酒店预订记录等)
产品:通过登录
1.获取用户数据,注册登录=账户信息=用户数据=变现前提
a.找到“二八定律”中高价值的用户,建立有效的会员体系,养成策略,提高用户的粘度和退出门槛
b.精准营销,通过用户的来源数据选择投放优质投放渠道,
c.提升用户体验,对用户的行为数据建模来优化产品策略,提供个性化服务,eg:个性化推荐
d.数据挖掘,发现用户的需求/痛点,跨业务线给予用户提供立体服务
2.保证账户唯一性,是账号安全、信息存储的前提,同时有助于数据的精准统计
(可以作为用户在产品中的唯一标识,将一个账户认定成一张身份证)
功能设计——登录功能前提
选取什么样的登录方式,还是得按照产品定位与发展方向哒~
短信登录:需要开启运营商通道
第三方账号登录:申请第三方账号、接入第三方sdk
(参考:第三方账号登录功能接入全流程)
功能设计——登录方式的选择
已知当前市面上常见的登录方式有3种,账号密码(多为手机号+密码)、手机快捷登录、第三方联合登录,三种方式的优势劣势如下:
PS:根据18年网民注册习惯,倘若已有社交账号的便捷登录可选,88.1%的受访者会优先社交账号登录(2018中国网民个人隐私状况调查报告)
本文主要就手机验证码快捷登录和第三方账号登录在设计过程中需要注意的点进行阐述
功能设计-手机验证码快捷登录
手机快捷登录主要包含以下三个部分:
1.手机号码的输入、展示、验证
2.验证码的获取、输入、验证
3.防盗刷机制的建立
手机号
手机快捷登录,输入手机号前后,均有诸多细节需要考虑:
输入前:
默认展示项:
1.默认提示文字:请输入手机号码(示例)
2.光标置于手机号码输入框
3.回显上次登录使用的手机号码(如果有)
4.区号的展示与选择(根据产品定位抉择是否需要支持非大陆地区手机号码,如支持,考虑结合位置信息展示默认区号,本文基于仅支持中国大陆11位手机号码的登录进行阐述)
交互细节:
点击输入框,弹出数字键盘(包含控制键盘状态:回车、清除项的交互)
输入中:
输入键盘:针对手机号码登录,展示数字键盘
输入展示:针对11位手机号码,考虑344样式展示
输入限制:
1.限制输入的手机号码长度(考虑复制粘贴时的长度限制、超出限制时的反馈提示)
2.限制输入的字符(仅支持数字,不支持其他文字符号)
输入操作:支持对输入框中的输入项进行一键删除
输入后:
针对输入的手机号码进行验证(自动校验/手动校验),可能存在的情况如下:
1.手机号码正常
2.手机号码长度不够(输入不足11位,提示:请输入11位手机号码)
3.手机号码不存在(输入满足手机号码的条件,但是号码未使用)
4.手机号码不正确(输入项非手机号码,例如中国大陆地区非1开通头)
------针对上述不同情况,进行不同的提示及引导(常用toast提示)
验证码
手机快捷登录,验证码的获取、输入、验证各环节关键点如下:
获取验证码
获取前提:
手机号码通过验证后,可获取验证码
交互与展示:
1.获取验证码btn可做状态限制(默认置灰,当输入11位手机号码时,变为可点击状态)
2.点击获取验证码,首先对手机号码进行校验,校验通过后,可发送短信
3.手机号码校验通过后,客户端进行验证码发送提示(验证码已发送,请注意查收短信)
4.获取验证码过程中,客户端增加倒计时限制(一般60S),一定程度上防止盗刷并能够给用户正确的操作反馈和等待时间,倒计时结束后,可重新获取验证码
5.获取验证码倒计时过程中,用户选择退出,交互提示的考量(a:直接退出,清除倒计时状态,不做任何提示;b:弹窗提示正在获取验证码是否等待)
6.获取验证码过程中,焦点需要定位到验证码输入框(默认提示文字:输入验证码)
获取限制:
限制验证码的获取频率,常见几种方案:
1.60S内不能重复获取
2.限制单人3或者5分钟内的操作次数
3.限制单人单天的操作次数
获取异常:
1.断网:进行断网提示(常见toast)
2.未收到短信:常见用语音验证替代(本文未做详细阐述)或者1分钟后重新获取
3.验证码发送失败(未知异常,提示重新获取,并返回错误码进行上报)
输入验证码
输入键盘:
展示数字键盘
输入限制:
1.限制输入的验证码长度(常见4-6位,考虑粘贴时的长度限制、超出限制时的反馈提示)
2.限制输入的字符(仅支持数字,不支持其他文字符号)
输入交互:
1.自动填充(iOS12)
2.手动输入(输入限制)
验证码校验
输入手机号和验证码后,即可登录,此时需要对手机号码和验证码进行校验:
手机号校验及提示见上文,验证码校验及提示如下:
1.验证码失效/过期(常见验证码5分钟内有效)(toast:验证码过期,请重新获取)
2.验证码错误(toast:请输入正确的验证码)
其他登录可能异常:
1.断网
2.其他未知登录异常(需要返回错误码进行上报)
防盗刷短信
由于短信验证消耗成本,因此需要考虑短信登录时的防盗刷机制
(可考虑方案:手机号、ip、图形验证、限制发送间隔、30分钟内同一个验证码等)
具体如下:
1.间隔发送:
a.上文已经提到,60-120S间隔发送,保障用户体验,避免部分恶意验证
b.频繁操作限制,例如5分钟内仅支持最多3次发送
2.手机号码限制:例如一个手机号码一天最多可以发送20次
3.缓存同一手机号码的验证码,30分钟内使用同一验证码(考虑技术方案及缓存实现)
4.IP限制:根据自己的业务特点,设置每个IP每天的最大发送量
5.图形验证码限制:验证次数达到限制后,出现图形验证码,验证通过之后才会发送短信验证码(例如以天为单位,从第5次发送开始,出现图片验证,之前不展示图片验证)
其中,1-4均有方法可破解,图形验证码相对有效防止恶意攻击
功能设计-第三方账号登录
使用第三方账号登录前,产品侧需要申请第三方账号,接入第三方SDK。常见的快捷登录方式主要是:微信、QQ、微博
第三方账号登录的难点在与绑定手机号码的流程以及登录成功后的第三方账号用户提取规则(头像、昵称等)
第三方账号登录
登录前:默认登录页标记上册登录的方式
登录中:点击授权登录后,先返回默认登录页(此时需要有加载状态),然后跳转至登录完成页面(针对不需要绑定手机号码的场景)
登录后:应尽量提取所有可获得的第三方用户信息(头像、昵称、性别、年龄、地区等)
第三方账户登录——绑定手机号码
使用第三方账户登录,如果不绑定手机,则可能无法获得用户的有效信息且无法保证账户的唯一性,然而强制绑定手机号势必会提高注册门槛,损失用户(而且用户会有上当的感觉,还不如直接手机号码登录),因此常见的有三种方案:
1.保障用户体验为主:不显示绑定手机号码提示
2.产品数据为主:强制绑定手机号码
3.兼容两者,提示绑定手机号码,但是可跳过
PS:无论以上哪种方式,均需要考虑在登录后提供账号绑定功能
绑定手机号码为第三方账号授权成功之后,流程与手机号码登录时相似,需要考虑手机号码的输入、展示与验证;考虑验证码的获取、输入、验证;考虑绑定过程中的异常提示
第三方登录绑定手机号码流程如下(取方案3,绑定可跳过):
注意点:
1.验证手机号码时,新增手机号码是否已经存在的验证(即该手机号码是否已经使用于此应用)
2.如果手机号码存在,则需要验证手机号码是否已经绑定同一平台的账户(例如用QQ1登录的时候,判断该的手机号码是否已经关联QQ2),如果未绑定,则正常进行下一步操作;如果已绑定,则需要切换手机号码、使用已有账号登录或者直接跳过不再绑定手机号码
3.此处绑定手机号码仍然涉及短信的防盗刷机制(与手机快捷登录时一致)
4.个人中心需要建立多账号的绑定与解绑机制(以手机号码对应的用户id为主id)
用户信息提取
使用第三方账户登录时,可以获得一些用户的已有信息,例如头像、昵称、性别、年龄等,如何提取、存储、展示这些信息,需要进行考量(下文)
登录后,用户信息的获取与展示规则
无论是使用手机快捷登录还是使用第三方账号登录,我们总能获得一些信息,来填充用户的个人信息(头像、昵称等),以下列举常用的一些用户信息的获取与展示规则:
个人信息的展示优先级:人为修改>第三方获取>默认
头像:
手机号码登录:使用默认头像
第三方登录:使用三方账户头像
用户手动修改:支持拍照或者从相册中选取
PS:需要考虑:图片尺寸限制、格式限制(例如不支持动图)、图片合法性限制(可接入第三方头像审核服务)
昵称:
昵称限制:字符数限制、输入格式限制(例如是否支持特殊字符和表情等)、重复性限制(昵称平台唯一性)
手机号登录:使用默认昵称(一般为XX用户+手机号码后四位;手机号码中间4为加密等)
第三方登录:直接使用第三方昵称,考虑重复性、字符数量和格式限制
PS:昵称需进行审核,比较简单的方式可直接进行敏感词过滤
性别:
未选择时,考虑是否进行默认定义
手机号码登录:默认未选择,部分产品在登录后直接提供性别选择页
第三方登录:则直接展示第三方性别信息
年龄/生日:
考虑开始时间(最早时间):例如1900年1月1日
最晚时间:今年or今天
默认展示时间:取当前用户画像数据,例如用户大多为95后刚毕业大学生,则默认展示19960101等
第三方登录时,获取到的年龄未在定义内,则不做取用
登录后-账号注销
工信部规定要求移动端应用必须支持账号的主动注销功能,完整的注册登录流程应包含账户注销功能,具体注销要求各应用自定,一般要求无未用资产、账户无与其他产品、网站的授权登录或绑定关系、账户30天内无修改绑定或手机号码等行为
具体可参考:为了响应工信部要求,我们整理了这些网络账户注销指南
数据统计-登录
最后简要说明一下登录相关的数据统计:
1.短信消耗数(核算成本)
2.用户数据(不同登录方式的登录人数——整体数据,功能or入口改进)
3.登录漏斗(不同登录方式、不同第三方的登录成功率、各环节漏斗——技术优化)
------------------------------
本文仅从需求设计角度简单的阐述登录体系的部分环节,后续会不定期更新完善哒~