关于用户系统中第三方登录的设计

11,118 阅读15分钟


首先让我们思考一个问题,用户为什么喜欢第三方登录?

1、因为没有烦人的注册过程

2、因为不需要记忆登录网站的密码,只需记住第三方账号和密码就可以了

关于第1点,并不是所有的第三方登录都不需要注册。

第三方登录的诞生

传统登录

首先让我们来看看,传统的用户系统是怎么设计的。

在传统的用户系统中,网站会要求用户先进行注册。注册的过程一般包括以下几种情况:

1填写用户名》设置密码》填写其他注册信息。

缺点:无法获取到用户的关键信息(邮箱、手机号等)

2填写邮箱地址》验证邮箱》设置密码》填写其他注册信息。

优点:可以获取到用户的关键信息,并且用户容易接受

3填写手机号》验证手机号》设置密码》填写其他注册信息。

优点:可以获取到用户的关键信息

缺点:部分用户反感绑定手机号,加大了注册门槛

通过上面这三种方式注册好后,就可以使用用户名、邮箱、手机和密码登录。其实使用 用户名、邮箱、手机和密码登录这三种登录方式可以归纳为使用用户账号和用户密码登录

这种系统有两个缺点:

1需要事先注册账号

2需要要牢记该网站的账号和密码

其实比起第1点,第2点更让用户头疼,在这个互联网时代,每个人都注册了大量网站账号,很多网站对密码的要求还不一样,时间一长那些不怎么用的网站的密码很容易就忘记。

手机号加验证码登录

后来出现了手机号和手机验证码这种不需要记住密码的登录方式。支持这种方式登录的系统一般还是会让用户先注册,注册的过程一般是

填写手机号》验证手机号》填写其他注册信息。

这种方式虽然还是存在令用户讨厌的注册过程,但是采用验证码登录后,用户再也不需要记住密码了。

然而,这种登录方式虽然看起来很好,但却不得不面对一个问题,那就是绑定手机号是很多用户反感的事情。

反感的原因通常有两点:

1、用户注重隐私,不想把重要的个人信息暴露给别人

2、手机号绑定的账号多了之后,更换手机号会特别麻烦

现在让我们来总结一下这种登录方式的优缺点

优点:用户不用记忆密码

缺点:还是存在注册过程,另外部分用户会反感绑定手机号

那有没有一种既不需要绑定手机号,又不用记住密码的登录方式呢?

答案是有的,那就是第三方登录。

第三方登录

第三方登录是通过qq、微信、微博等等,第三方系统的账户来登录其他的系统。其他系统会在用户登录的时候调用第三方的登录窗口,用户在第三方登录后,第三方系统会返回给我们一个第三方的用户uid,token,这个像相当于用户名和密码了。

我们可以将这个两个值存在数据库中当做第三方登录的用户名和密码。下次用户在通过第三方登录的时候,我们发现这个uid我们的数据库以及有了,就知道他是哪个用户了。

到这里,事情本应该解决了,但实际上问题才刚刚开始。

麻烦的第三方登录

基本流程

让我们回忆一下自己使用过的那些可以进行第三方登录的网站或应用。

一般流程是这样的

用户选择第三方登录》第三方登录成功》系统提示你还没有注册,让你填写注册信息》你心里暗骂sb,我tm选择第三方登录就是不想注册,你这样比直接注册还麻烦》

最后的结果有三种

1终止注册离开网址

2退出绑定过程,重新选择传统方式注册

3忍气吞声完成注册(当你选择3后,系统会将你的第三方账户和你的注册账户绑定,之后你既可以通过注册的账号登录,又可以通过第三方登录。)

虽然这种模式一直被用户诟病,但这依然是大多数支持第三方登录网站的首选,那为什么大多数网站第三方登录都要做成这种模式呢?

使用该模式的原因

原因有些复杂,需要你了解直接第三方登录的模式后才能体会其中的缘由,这里简单说一下。

采用这种模式的系统将第三方登录看成一种登录方式,一个用户可以有多个登录方式,比如手机登录、邮箱登录、微博登录、微信登录、qq登录等等。

但这些都只是登录方式而已,你在登录之前,必须的有账户吧!而且你的账户必须绑定了该第三方的账号吧,不然怎么登录呢?

所以你在没有账户时,直接通过第三方账号去登录这种类型的网站,他会让你先注册一个账户。看起来好像是网站在套路你一样,让你先登录,然后又让你注册。实际上这种网站的第三方登录是提供给已有账户的用户用的,怕他们忘记了密码,所以给他们提供绑定第三方账号的服务,让他们在记不住密码时可以通过第三方账号来登录。

优势及弊端

该种模式通过绑定第三方账号,解决了用户容易忘记本站密码的问题。但在注册时,会使新用户反感。

改进方案

可以在登录界面明确指出,第三方登录是给已有账户且绑定了第三方账号的人用的,这样至少不会让用户在注册时,以为你在套路他。

真·第三方登录

很多用户都觉得上面的模式太麻烦了,就不能直接用第三方账号登录系统吗?当然是可以的,并且有部分网站就是这样做的,比如简书。

基本流程

在这种不需要提前注册,直接可以使用第三方用户登录的系统中,一般流程是这样的

用户选择第三方登录》第三方登录成功》系统后台判断是否为第一次登录,如果是,就创建一个用户。》创建用户并登录成功

从上面的流程可以看到,这种模式将注册流程给省略掉了,从原来的收集用户信息,创建用户。变成不收集用户信息,直接创建用户。

该模式使用较少的原因

你可能会觉得这种模式不是挺好的吗,对用户友善多了,为什么会用的人少呢?

要回答这个问题还得从两层面来说

系统设计层面

在前面麻烦的第三方登录那一章,我有讲到,那种模式其实是将第三方登录看成用户的一种登录方式。

·第三方登录不一样,这种模式将第三方登录看成一个独立的用户。

由于没有了注册过程,第三方账号第一次登录时,将无账户可登,这时差异出现了,麻烦的第三方登录让用户去注册,·第三方登录 直接生成一个账户。

但是这个自动生成的账户只是个空壳,里面一点有用的个人信息都没有。而且不像上面那种登陆方式,多个第三方账号都是登录在同一账户下,这种模式下如果一个人用多个第三方账号登陆,会生成多个账户。并且这几个账户之间相互独立,没有任何关系,尽管他们都来自同一个人的。

有人可能要问了,一个人有多个账户有什么影响吗。

其实在系统设计的层面上来讲,我们希望一个用户尽量对应一个现实生活中的人(关于这个原则我会再写一篇文章来说明) 。这样可以降低系统的复杂性,毕竟我们的系统最终是要为人提供服务,而不是“用户”。

那怎样让一个用户尽量对应一个现实生活中的人呢?答案是在创建用户的时候,让系统绑定并验证一个人的关键信息,比如手机号或邮箱等。因为一个人一般也就1个手机号,最多2到3个。常用的邮箱一般也就1、2个。这这关键信息基本上可以代表一个人。

这种模式下,由于没有了注册过程,创建用户时,无法绑定并验证一个人的关键信息,导致一个用户无法代表一个人

这种模式下,一个人可以轻松拥有多个账户,这将导致用户行为分散到了多个账户中,增加了系统的复杂性

为什么注册对网站很重要,很多网站死咬着不放,原因就在这里。

说了这么多,总结一句话就是,这种模式下的用户无法与现实中的人建立一对一的映射,导致用户行为分散,系统复杂性提高(这句话可能有些难以理解,没关系继续往下看就知道我在说什么)。

用户使用层面

由于注册门槛降低了,导致用户十分容易就可以拥有多个账户,甚至说一不小心就注册了多个账户。

一个人有多个账户本来没什么不可以的,但在某些情况下,会影响用户使用产品的连贯性,造成不好的用户体验。

这里的某些情况指的是:用户在不同是时期,用不同的第三方账号登录,进行了不同的操作,而用户却希望这些操作是发生在同一个账户下。

什么意思?

以简书为例,假设有以下几种情景模式

情景1 某天,用户第一次用qq登录简书(这时简书会自动创建了一个账户),用户在简书看了几篇文章,并收藏了其中一篇文章(注意这篇文章是收藏在qq登录的账户下)。

情景2 一段时间后,用户又来登录简书了,但是这时候却想不起来上次是用哪个第三方账号登录的。(记不住也很正常,现在很多网站和应用都支持第三方登录,各个网站支持的还都不一样,有的支持微博、有的支持微信、有的支持qq、还有的全都支持。网站一多,时间一长,就分不清哪个网站是用哪个第三方账号登录的)。

这个时候用户一般会根据记忆选择一个第三方账号来登录,假如这次用户选择的是微信登录,登录上去一看,是个新账号,此时用户一般会有两种做法:

1、退出该账号选择其他第三方登录。此时系统白白创建了一个新账户。

2、新账号就新账号,都一样用。

假设用户选择了2,然后用新号在简书看了几篇文章,并收藏了其中一篇文章(注意这篇文章是收藏在微信登录的账户下)。

情景3 一天,用户想整理自己在简书上收藏的文章,但却发现,收藏的文章被分散到了几个不同的第三方账户中。这时候用户可能会抱怨说,什么破网站,我在其他网站不管是通过哪个第三方账号登录,都是登录到了同一个账户上,所有的操作也都是发生在同一个账户下的。

上面的情景123就是我说的“用户在不同是时期,用不同的第三方账号登录,进行了不同的操作,而用户却希望这些操作是发生在同一个账户下

上面出现的问题就是我说的,在某些情况下一个人拥有多个账号时,会影响使用产品的连贯性,造成不好的用户体验。当然这有一个前提条件,那就是用户本意是只想要一个账户。如果用户一开始就是冲着多个账户去的那当然不影响他的体验。

说了这么多,总结一句话就是,这种模式下容易导致用户行为分散(收藏文章这个行为被分配到了不同的账号中),后期如果想将分散的行为汇总会很困难(将不同第三方账号收藏的文章汇总到一起)。

(在简书中,如果你想将多个第三方登录产生的账户合并成一个账户,首先要使用手机号或邮箱注册一个传统账户,然后将你第三方登录的账户中所有发表的文章先备份到本地,然后全部删除,还要将账户中的钱全部用完。之后让系统将你的第三方账户彻底删除。之后再用传统的账户重新绑定第三方账号。最后重新上传文章。)

优势和弊端

优势:

没有注册流程,容易吸引用户。

弊端:

模式下的用户无法与现实中的人建立一对一的映射,导致用户行为分散,系统复杂性提高。

改进方案

只支持单一第三方登录(比如只支持微信登录),这样虽然还是无法让用户与现实中的人建立一对一的映射,但是至少用户行为的分散程度降低了,不会像支持多个第三方账号登录的系统那么高

总结

目前第三方登录通常有两种设计思路

1、将第三方登录看成一种登录方式,使用第三方登录的前提是,你先要有一个账户。

缺点:当用户没有账户,直接使用第三方登录时,你只能提示他先去注册账户。但在用户看来,就是欺骗,容易引起用户的反感。

优点:当用户账户绑定了第三方账号后,用户就在也不用记住密码了,完全可以通过各个熟悉的第三方账号登录系统。

2、将第三方登录,看成一个独立的用户

优点:没有注册流程,容易吸引用户,由于是第三方直接登录,也不需要考虑用户会忘记密码

缺点:一个人容易产生多个账户,用户的行为容易分散到多个账户中,增加了系统的复杂性,某些情况下还会影响用户的产品体验。

通篇看下来,第三方登录并没有想象中的那么美好,第一种方式也就仅仅解决用户忘记密码的问题,注册时还会引起用户反感。第二种方式虽然能起到吸引用户的作用,但却增加了系统的复杂性,某些情况下还会影响用户的产品体验。

所以,大家可以根据自己的实际情况,考虑是否要添加第三方登录的支持,如果要,应该使用哪种第三方登录的模式。

番外

不使用第三方登录,如何吸引用户注册

一句话来说就是降低注册门槛

首先不要使用传统的表单注册的形式,这样会让用户觉得自己在填表。(我想这世界上应该没有人喜欢填表吧)

其实完全可以采用引导式注册,比如:

1、注册界面就只有一个输入框,让用户输入手机号或邮箱。

2、当用户点击获取验证码的按钮后,UI进入到了验证用户的界面

3、输入验证码,验证通过后,UI进入设置密码的界面

4、用户设置密码

5、够了,前4步基本就可以拿到一个用户最的核心信息,其他信息像什么用户名啊、昵称啊完全可以用注册时的邮箱和手机号代替,或者等用户进入应用后再填写,或者等后期再完善。不要想着一下子拿到用户的所有信息,那样用户只会被你吓跑。