• 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(上) 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(下)


    微信、QQ、新浪微博等第三方登录,你想知道的都在这了(上):https://www.jianshu.com/p/133d84042483  

    微信、QQ、新浪微博等第三方登录,你想知道的都在这了(下):https://www.jianshu.com/p/e2636421eba5   

    微信、QQ、新浪微博等第三方登录,你想知道的都在这了(上):

    在主流的APP中,微信快捷登录已经成为了登录体系的标配,我们越来越习惯不去记忆密码,而是点击跳转到微信,再点击授权进入到APP中。

     
     

    我们把这类通过第三方授权授权来登录自家产品的方式,统称为第三方登录。

    但是有没有好奇,为什么点击一下授权,就完成了登录,如此神奇的功能背后的产品逻辑是什么?

     
     

    嗯,本文就是来解答你的这个疑惑的,围绕第三方登录,讲清三件事情。

    1.是什么?

    · 第三方登录的本质是什么?

    2.为什么?

    · 产品为什么加入这些第三方登录的方式呢?

    3. 怎么办?

    · 如果产品想加入第三方登录,该如何申请?

    · 多端(web、wap和app等)之间如何打通三方登录?

    一、三方登录是什么

    1.第三方登录的实质

    第三方登录的实质,就是在OAuth2.0协议的基础上,利用外部的标识来获取帐号的内部标识然后完成登录的过程。

    具体的讲,就是将三方的帐号绑定到产品自身的帐号上,当查询到用户第三方的帐号已经绑定了平台的某个user_id时,直接登录对应的帐号。

    2.理解几个概念

    我估计你可能被上面的专业名词绕晕了,为了帮助你理解及方便下文讲述流程,下面先来理清下几个概念。

    放心,其实很简单,不要被这些陌生的词汇吓到了:)

    1)外部标识

    用来使用用户身份的标志,可以是用户名,手机号,邮箱等,每一个外部标识一定和一个内部标识相关联用以确定一个用户。

    需要注意的是,外部标识可能改变,例如小明12年用的是手机号A,17年用的是手机号B,在APP内更改了登录的手机号,就完成了外部标识的改变。

    所以,外部标识的作用有两个

    1. 让用户通过自己熟知且占有的外部标识来登录产品

    2. 可以通过校验外部标识来实现找回或转移数据资产(用户注册帐号后使用产品过程中产生的所有数据,例如在微信,数据资产是你的好友,历史聊天记录,所发的朋友圈;而在游戏中是你的游戏角色,拥有的装备,好友等)

    2)内部标识

    即产品中用于标识用户唯一性的标志,例如user_id,必须有,不可更改且唯一,用户一般接触不到内部标识。

    当一个内部标识建立后,用户所有的数据资产都会绑定到这个内部标识上。

    3)user_id

    一个常用的内部标识,类似你的18位身份证ID

    4)app_id

    用于区别不同APP的ID,具有唯一性。

    5)open_id

    第三方平台为了用户信息的安全,一般不会直接将用户的内部标识给到其他产品,而是选择了给一个外部标识,这个open_id就是微信给各个APP用以区分微信用户身份的外部标识

    需要注意的是,即使是同一个用户,微信给不同的APP的open_id也是不同的,这会导致一个问题。

    例如我有两款产品,一款美团,一款美团外卖。

    对微信而言,这是两个app_id,所以当用户授权美团使用微信信息后,微信给的是open_id_1,用户再来到美团外卖公众号,这时候还要再授权一次,微信给的是open_id_2

    但实际上在美团的帐号体系中,这都是同一个用户,却绑定了两个open_id,可能导致用户注册了两个帐号,数据不会互通,这显然是有问题的。

    如何解决?往下看

    6)union_id

    为了解决上面的问题,union_id诞生了。

    不同的产品的可以使用同一个union_id来确认用户的身份。

    对于使用同一套用户数据的不同产品,可以向微信申请union_id,当A产品获得了用户授权后,拿到该用户的union_id,这时候再使用B产品再进行授权后,发现这是同一个union_id,直接登录之前的帐户,避免了同个微信用户注册了两个帐号数据不同步的问题。

    7)access_token

    可以理解为通行证,有了这个通行证,就能获取到第三方平台指定用户的有限信息

    8)OAuth 2.0

    这个不太容易解释,我们简单的理解为授权的通用协议

    为什么需要这个,我们假设这样一个场景

    假设你是做电商的,一位快递天天都需要上门到你家取件,但是你居住的小区是有门禁的,进入小区的方式有两种

    1.利用你家的门禁卡(这个门禁卡能打开小区门和你家的电子门)

    2.利用小区的临时门禁卡进入

    这两种方式, 显然第二种是更安全的,因为快递小哥只需要有临时卡进入小区,然后到你家按门铃,你再交付快递给他就好。而直接将你家的门禁卡给他,显然不理智。

    现实中的例子很好理解,那么在第三方登录中也是如此

    APP → 快递小哥

    第三方应用 → 你家

    用户信息 → 快递件

    第三方应用平台下用户的帐号和密码 → 你家的门禁卡

    Token → 小区临时门禁卡

    APP(快递小哥)需要从第三方应用那拿到你的资料(快件),显然第三方应用不可能把帐号和密码(你家的门禁卡)给APP,这时候提供一个Token(临时的小区门禁卡),让APP既能获取到你的用户信息(快件),又保证了安全。

     
    第三方登录的时序图

    好了,理清了上面的基础概念和了解了第三方登录的实质,再讲讲产品加入第三方登录有哪些好处。

    二、为什么需要加入第三方登录

    1. 提高登录转化率,登录更加快捷,不需要输入密码

    在PC时代,登录不同的网站,为了避免网站被攻击后导致的用户数据泄露,自己会将网站分类,不熟的网站使用密码A,常用的网站使用密码B,重要的网站用密码C,极其重要的几个网站单独用密码DEF等等,但是记忆起来很费事。

    到了移动互联网时代,几大第三方平台已经成为了人手必备了产品了,特别是微信,简直可以看成移动互联网的用户身份证。

    产品接入了第三方登录后,用户跳转到第三方应用,直接在授权页面点击授权即可进入产品,免去了输入密码的环节,能提高登录的转化率。

    2. 提高注册转化率,注册更加快速,方便获取用户信息

    第三方登录能简化注册流程,快速获取到用户信息,例如头像,昵称,性别,所在城市等等,让用户减少了信息填写的步骤,能更快的使用产品。

    以微信小程序为例,对于不需要自建帐号体系的产品来说,有了微信授权后,仅仅需要点击一次“允许”就完成了帐号的注册,产品也能直接获取到用户的一系列信息,用户体验极好。

     
     

    如果对比还不够清晰,将传统注册流程和微信授权的流程列出后,就会发现,原本需要花8个步骤3-5分钟完成的事情,微信授权不到5S就完成了。

     
     

    可见第三方登录对于提供注册转化率是有很大帮助的。

    3. 信赖感

    当我在大学期间,浏览一个陌生网站时,一旦需要登录,看到QQ登录的时候,心中总会突然出现一丝的信赖感。

    因为在我已有的观念中,这个陌生的网站居然和QQ这个我异常熟悉的伙伴达成了“合作”(后来自己做产品才知道,QQ开放平台,只要你申请通过了接入。。。),心里对这个网站的戒备心里就会少很多。

    但为什么我会有这种心理呢?

    我们愿意相信自己熟悉的人和物对陌生的事物进行的背书

    这其实非常好理解,如果你有个铁哥们的小明,小明也认识小红,在两种场景下

    一种,你初识小东,但是小明不在场或者小明不认识小红;

    另一种,你初识小东,但是小明在场,和你说小红我认识了10年的朋友啊

    你是否对小东的信赖感瞬间上来了,因为这是你铁哥们小明对小红的背书啊,第二种方式下,你容易对小明产生信奈感。

    所以,有三方登录的产品,让用户觉得这个产品和大厂是有合作的,提高对产品的信赖感,最终能实现提高产品的登录和注册转化率。

    呼,看到这里,你应该理清了概念,知道了第三方登录的实质以及为什么需要接入第三方登录了,那么重点来了——产品如何申请第三方登录,第三方登录的流程又是怎样,以及有哪些注意事项?

    篇幅原因,下篇见《微信、QQ、新浪微博等第三方登录,你想知道的都在这了(下)》



    微信、QQ、新浪微博等第三方登录,你想知道的都在这了(下):

    第三方登录的下篇奉上,姗姗来迟。

    上文链接:微信、QQ、新浪微博等第三方登录,你想知道的都在这了(上)

    在上文中,我们了解了第三方登录是什么及为什么需要第三方登录,下面讲讲实现的流程。

    三、如何建立完善的第三方登录体系

    1.申请流程

    目前市面上的第三方开放平台屈指可数,基本都是BAT级才会去做这种事情,我们以常见的微信,腾讯QQ和新浪微博三家,简单讲下具体申请流程。

    1)微信

    微信开放平台:https://open.weixin.qq.com

    1. 注册一个开放平台的帐号(用公司共用邮箱,别用自己的,否则离职容易有纠纷)

    2. 进入【管理中心】,创建应用提交审核,获取AppID(审核时间3个工作日内)

    一个帐号最多可以创建提交10个应用,非常够用啦

     
     

    3. 获取到AppID后,就可以拿着“AppID”和“微信开放平台的开发者文档”跑去和开发哥哥沟通具体的接入了。

    具体的实现方式中的code,access_token等你不了解没有关系,研发同事根据文档实现起来基本没问题。产品最主要还是要关注整体的流程。

    另外,值得一提的是,需要提醒研发同事,使用UnionID作为用户的唯一标识而非OpenID。

    2)腾讯开放平台

    1. 注册腾讯开放平台专用QQ

    2. 完善个人信息或公司信息

    3. 创建应用,提交审核

    注意!!腾讯开放平台的逻辑比较奇葩,android和iOS分别需要提交两次,web端的更是需要在另一个平台创建提交应用

     

    4.1 创建android和iOS应用

    首先先创建一个android的应用,再点击右上角的iOS应用,再次提交iOS的信息,这样就能保证iOS和android用的是同一个APP ID。

    如果分别在android和iOS应用创建应用,会生成两个APP ID,需要非常注意!

     
     

     

    4.2 创建网站应用

    创建网站应用不能直接在开放平台中创建,需要需要移步到QQ互联。

    网站应用即在PC网站内或移动端网站内使用第三方登录,而开放平台中的网页应用指的是接入到QQ空间,朋友网和3366网站中,提供第三方的软件服务。

    两者是不同的,需要特别注意,这里我们需要的是网站应用。

    腾讯互联:https://connect.qq.com/index.html

    4.2.1 注册腾讯腾讯互联专用QQ

    4.2.2 完善个人信息或公司信息

    4.2.3 创建网站应用,获取APPID

     
     

    5. 申请UnionID

    如果要实现web端应用,iOS和android应用在提供了第三方登录功能后,能够识别同一个用户,则需要使用到UnionID,目前腾讯的UnionID是没有直接开放,需要单独申请的。

    申请的方式查看腾讯给的常见问题解答,下载好申请表格,待应用审核通过了,邮件申请多个已审核通过的应用相互打通,获取统一的UnionID(审核速度很快,半天就下来了)。

    6. 将获取到的UnionID,各个端的APP ID,腾讯开放平台的开发者文档QQ互联的开发者文档整理好,提交给研发同事,就能进行开发了。

    说个题外话

    上面大家也注意到了,和微信开放平台的相比,腾讯开放平台不但繁琐,而且web端和移动端使用居然还是不同的网站,并且一开始没有提供UnionID,需要单独申请。

    猜想是腾讯自家的产品内部利益没有处理好,留下了历史的烂摊子,让开发者接入的时候变得繁琐,大公司的有大公司病

     

    3)新浪微博

    新浪微博开放平台:http://open.weibo.com/

    吐槽下,和微信及腾讯开放平台相比,新浪微博的开发平台仿佛没爹疼没娘爱,迭代做的很差,很多已下线的功能页面都没有相应的调整,误导用户;页面点击各种无响应乱跳转:)

    1. 注册一个新浪微博,登录新浪开放平台

    2. 提交资料认证完善开发者信息

    3. 创建应用,获取App Key(我当时提交1个工作日内就审核过了)

     
     

    4. 将拿到的App Key及新浪微博开发者文档邮件给到研发同事即可。

    应用未审核通过前,就可以先用已拿到的App Key进行开发,不影响开发进度。

    2.产品业务流程

    上述的各种ID准备完全后,实现上就交给万能的研发哥哥了,但是产品的业务流程还是需要产品狗们亲自梳理下的。

    由于自有的帐号体系比较复杂,我们主要来探讨下自有产品体系的三方登录怎么做,这里以原有手机号帐号体系,后续加入第三方登录为例,简单讲下。

     
     

    1)主线流程-平台帐号已绑定第三方帐号

    正常的用户路径中

    从登录页面点击进入第三方登录 > 通过第三方授权成功 >判断第三方帐号已绑定了平台的帐号

    > 已绑定平台帐号 > 登录成功

    但是第三方登录功能上线的时候,帐号都是没有绑定第三方帐号的,于是支线流程1 粗线了

     
     

    2)支线流程1-未绑定第三方帐号-帐号已注册

    第三方帐号未绑定平台的帐号 > 绑定流程 > 已绑定平台帐号 >  登录成功

    再考虑到绑定的过程中,用户可能没注册过帐号,于是支线流程2 出来了

    3)支线流程2-未绑定第三方帐号-帐号未注册

    绑定流程 > 注册流程 >  已绑定平台帐号 > 登录成功

    再绑定过程中,再考虑到其他异常状况,例如申请绑定的平台帐号之前已经绑定了其他的第三方帐号,又或者注册的时候,发现手机号已经被注册但有一段时间没有使用了(可能是运营商二次放号)等异常情况,于是又有分支流程3和分支流程4出来

    4)支线流程3-未绑定第三方帐号-帐号已注册-第三方帐号已被绑定

    绑定流程 > 第三方帐号已绑定平台其他帐号 > 确认解绑 > 重新绑定 >  已绑定平台帐号 > 登录成功

    5)支线流程4-未绑定第三方帐号-帐号已注册-帐号疑似二次放号-重新注册

    绑定流程 > 疑似二次放号 > 确认未注册 > 重新注册 >  已绑定平台帐号 > 登录成功

    其中分支流程3和4非必须,特别是帐号二次放号的检测,有多种检测方式,应根据各家产品自身的特点衡量是否需要做,同时分支流程在不同的产品上也不尽相同,产品需要衡量投入产出,确定颗粒度。

    3.注意事项

    1) 有多个产品时一定要使用UnionID

    如果多个产品是共用一套帐号体系的,一定要使用UnionID

    · 微信本身就有UnionID,使用的时候注意和OpenID的区别;

    · 腾讯开放平台需要特别申请UnionID,各渠道的应用审核通过后提交邮件申请,很快就能审批下来;

    · 新浪微博可以理解为本身用的就是UnionID,不需要特别申请。

    2)产品逻辑上如何避免二次放号的问题?

    二次放号(手机号历史已注册,后运营商回收后再次注册的问题)是帐号体系一直以来的痛!这个问题的解决办法详见《5千字干货——解决手机号二次使用导致的帐号问题》

    3)第三方帐号体系和自建帐号体系,如何抉择?

    两者冲突吗?其实并不冲突,但并非所有的产品都需要自建帐号体系,篇幅问题,这里先给自己挖个坑,欢迎关注“朱利安”的简书,我在后续将会解答《自建帐号体系和第三方帐号体系,如何抉择?》

    第三方登录的上篇链接:微信、QQ、新浪微博等第三方登录,你想知道的都在这了(上)



    作者:朱利安_AI产品经理
    链接:https://www.jianshu.com/p/e2636421eba5
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    搭建一个免费的,无限流量的Bloggithub Pages和Jekyll入门
    通过扩展方法 链式方法 为MVC 3 视图添加验证
    让移动UI模式设计者获得灵感的10个有用的网站资源
    企业级应用架构(NHibernater+Spring.Net+MVC3)_V1.0
    把博客放在Github
    实例化需求—流程
    nginx+keepalievd,实现负载均衡和故障点切换。keepalived双机热备。
    古城钟楼
    从初步使用该控件到多维数据集控件PivotGridControl
    搜索引擎的评价
  • 原文地址:https://www.cnblogs.com/bydzhangxiaowei/p/10315093.html
Copyright © 2020-2023  润新知