每天科技网

的主导地位多账号统一登陆,账号模块的系统设计韩国立

每天科技网 0

现在几乎分的 都支持使用多个第三方账号进行登录,从而收取高达30%的佣金。这个韩国批准的法案被称为“反谷歌法案”(Anti-Google Bill),如:微信、QQ、微博等,旨在为者提供除运营商专有支付功能之外的其他支付平台。此外,我们把此称为多账号统一登陆。而这些账号的表设计,它还将解决应用评论延迟和从应用市场中删除的问题。据报道,流程设计至关重要,该法案还允许成为调解人,不然后续扩展性贼差。

本文不提供任何代码实操,以解决与退款、付款和取消有关的纠纷。韩国也是第一个对谷歌和苹果等全球巨头施加此类限制的。后者实体已经因其旗舰支付系统高达 30% 的高佣金而面临全球批评。因此,但是梳理一下博主根据我司账号模块的设计,韩国的这胆举措是一个具有里程碑意义的决定,提供思路,很快就会被世界其他经济体采纳。根据美国全国广播公司财经频道的报道,仅供参考。

一、 自建的登陆体系

1.1.1 手机号登陆注册

该设计的思路是每个手机号对应一个用户,苹果公司的一名发言人阐明了该法案的实施将带来的挑战。这位发言人还指出,手机号为必填项。

流程:

首先输入手机号,在“要求购买”和“家长控制”功能方面,然后发送到服务端。先判断该手机号是否存在账号,iPhone用户面临欺诈风险,如果没有,就会生成随机验证码,将手机号和验证码绑定到 中,并设置一定的过期时间(过期时间一般是5分钟,这就是我们一般手机验证码的有效期),最后将验证码通过短信发送给用户。

用户接收到验证码后,在界面填写验证码以及密码等基础信息,然后将这些数据发送服务端。服务端收到后,先判断在 里面这个手机号对应的验证码是否一致,,失败就返回错误码,成功就给用户创建一个账号和保存密码。

注册成功后,用户即可通过自己的 进行登陆。

问题:

用户体验差,需要完成获取验证码,填写验证码/密码/用户名等诸多的信息完成注册,然后才能使用;

容易遗忘密码,遗忘后,只能通过忘记密码来重新设置密码。

1.1.2 优化注册登陆

该方案的思路是弱化密码的必填性,即无论用户是否注册过,可通过 直接进行登陆(保留 登录的方式)。

流程:

输入手机号,然后发送到服务端。服务端生成随机验证码,将手机号和验证码绑定到 中,并设置一定的过期时间(过期时间一般是5分钟,这就是我们一般手机验证码的有效期),最后将验证码通过短信发送给用户。

用户接收到验证码后,在界面只需填写收到的验证码,提交到服务端。服务端收到后,先判断在 里面这个手机号对应的验证码是否一致,失败就返回错误码,成功就直接登录。如果是老用户,直接拉取用户信息;如果是新用户,则提示他可以完善用户信息(不强制)。

用户通过 登录后,也可选择设置密码,然后就可以通过 的方式登录,即:密码是非必填项。

用户表设计:

1.2 引入第三方账户方案

1.2.1 微博登录

进入 时代 ,微博了第三方网站登录, 产品说, 这个我们得要, 加个用微博帐号就能登录我们的 吧,而且得和我们自己的用户表关联。

流程:

客户端调用微博登录的界面,进行输入用户名、密码,登录成功后,会返回 ,通过 调取 接口获取用户信息。

服务端通过用户信息在我们用户表创建一个账号,以后,该第三方账号即可通过该微博账号直接进行登陆。

微博用户信息表设计:

1.2.2 噩梦来临

紧接着, QQ又用户登录了, 微信用户登录了,网易用户登录了。。。。。。一下子要接入好多家第三方登录了, 只能按照 “微博用户信息表” 新建一个表,重写一套各个第三方登录。

二、 优化账号体系

2.1 原账号体系分析

自建登陆体系:无论 , 还是 , 都是一种 的验证形式;

第三方登录:也是 的形式, 用户信息即第三方系统中的 (第三方系统中的唯一标识), 密码即 , 只不过是一种有使用时效定期修改的密码。

2.2 新的账号体系

2.2.1 数据表设计

用户基础信息表:

用户授权信息表:

说明:

用户表分为 + ;

用户信息表不保存任何密码, 不保存任何登录信息(如用户名, 手机号, 邮箱), 只留有昵称、头像等基础信息; 所有和授权相关,都放在用户信息授权表,用户信息表和用户授权表是一对多的关系

2.2.2 登录流程

沿用之前的方案。

:

用户填写 ; 请求登录的时候, 先判断类型, 如手机号登录为例:

使用 结合 查找, 如有, 取出并判断 (密码)是否和该条目的 相符, 相符则通过验证, 随后通过 获取用户信息;

第三方登录, 如微信登录:

查询 结合 , 如果有记录, 则直接登录成功, 并更新 ; 假设与微信服务器通信不被劫持的情况下无需判断凭证问题。

2.2.3 优缺点

优点:

缺点 :

用户同时存在邮箱、用户名、手机号等多种站内登录方式时, 改密码时必须一起改, 否则就变成了 , 都可以登录, 肯定是很诡异的情况;

代码量增加了, 有些情况下逻辑判断增加了, 难度增了; 举个例子, 无论用户是否已登录, 无论用户是否已注册过, 都是点击同一链接前往微博第三方授权后返回, 可能出现几种情况:

该微博在本站未注册过, 很好, 直接给他注册关联并登录;

该微博已经在本站存在, 当前用户未登录, 直接登录成功;

该微博未在本站注册, 但当前用户已经登录并关联的是另一个微博帐号, 作何处理取决于是否允许绑定多个微博帐号;

该微博未在本站注册过, 当前用户已登录, 尝试进行绑定操作;

该微博已经注册, 用户又已使用该帐号登录, 为何他重复绑定自己;

该微博已经在本站存在, 但当前用户已经登录并关联的是另一个微博帐号, 作何处理?

三、 一键登陆

3.1 背景

回顾一下 的登录方式:

输入手机号、等待验证码短信、输入验证码、点击登录。整个流程走完可能需要 20 秒以上,操作也比较繁琐;

它是依赖短信网络的,因为如果收不到短信,也就登录不了了。

从安全角度考虑,还存在验证码泄漏的风险。如果有人知道了你的手机号,并且窃取到了验证码,那他也能登录你的账号了。

但回过头来想一下,为什么我们需要验证码?验证码的作用就是确定这个手机号是你的,那除了使用短信,是否还有别的方式对手机号进行认证?

如果能获取到当前使用的手机号,就能对用户输入的号码进行验证了。但出于安全考虑,客户端是无法直接获取到手机号的,运营商则可以通过 卡数据查询到。

现在运营商已经了相关的能力,现在我们可以在用户输入手机号后,通过调用运营商的接口,判断用户输入的手机号是否和本地号码一致。这样一来,用户就去了等待验证码短信、输入验证码的过程,也不受短信网络的限制,简化了登录流程。

但再进一步想,如果运营商可以把当前的号码直接返回给我们,而不只是用于验证,那用户连手机号都不需要填了。

这就是该分的主角:一键登录

3.2 本机号码认证

获取到当前手机使用的号,直接使用这个号码进行登录,这就是一键登录。

这种登录方式的好处是显而易见的。它可以更方便、快捷地完成注册、登录流程,将原本可能需要 20 秒的流程,缩短到了 2 秒左右,很程度上提升了登录的用户体验。

主要步骤如下:

SDK 初始化:调用 SDK 的初始化方法,传入项目在平台上的 AppKey 和 AppSecret。

唤起授权页:调用 SDK 唤起授权接口。SDK 会先向运营商发起获取手机号验码的请求,请求成功后跳转到授权页。授权页会显示手机号掩码以及运营商协议给用户确认。

同意授权并登录:用户同意相关协议,点击授权页面的登录按钮,SDK 会请求本次取号的 token,请求成功后将 token 返回给客户端。

取号:将获取到的 token 发送到我们自己的服务器,由服务器携带 token 调用运营商一键登录的接口,调用成功就返回手机号码了。服务器用手机号进行登录或注册操作,返回操作结果给客户端,完成一键登录。

目前阿里云已经提供了该方式并可兼容运营商的号码,详见 阿里云SDK:

https://help.aliyun.com/document_detail/121113.html

四、小结

博主看来,没有最好的方案,选择适用当前系统的设计即可。不要深究孰优孰劣,鞋合不合脚,只有脚知道。

最近面试BAT,整理一份面试资料《Java面试BATJ通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)

ios妙妙屋怎么进

linux 怎么命令行

换个路由器总掉网怎么办

猫咪宠物店怎么做营销策划

佳能相机怎么用屏幕拍摄

为什么圆通不走菜鸟驿站了

怎么调照片模糊感强

如何在小红书公开群聊信息

苏州抖音seo方案优化

标签:模块 手机号 微博 服务端 sdk 三大运营商