App中手机号码一键登录原理

一键登录从用户体验和安全性上来讲是更优的一种登录方式,目前在很多APP的目前都支持“本机号码一键登录”功能,如下图所示的一键登录图:
在这里插入图片描述
APP中会展示一个带有手机号掩码(中间4位号码隐藏了)的授权登录页面,用户点击“同意授权”按钮后,应用APP通过运营商获取完整的手机号码(因为为了保护用户隐私,Android和IOS系统限制了应用直接获取本机号码的能力),然后有了完整的手机号码后可以实现以本机号码的方式登录。那么本机号码一键登录是如何实现的呢?下面我们来聊聊它的实现原理和流程。

本机号码一键登录是一种新型的登录方式,登录方式的演变过程大致可以分几个阶段:

在这里插入图片描述

1、本机号码一键登录的基础原理

手机流量上网原理是实现一键登录的关键。流量上网采用PPP协议进行点对点连接。在物理层,流量通过手机内置的基带模块进行无线信号的调制、解调工作。

流量上网过程分为接入和传输两个阶段,接入阶段中手机携带IMSI信息连接MME(移动控制单元),MME通过HSS(归属签约用户服务器)验证后,进行初始化并提供加密传输支持。传输阶段中数据包经过基站、S-GW(服务网关)、P-GW(PDN网关)到达互联网资源,同时运营商能够通过IMSI或GUTI获取当前用户的手机号码。

获取手机号码的能力通过数据网关实现,运营商具备验证连接用户身份的能力,手机卡中的IMSI信息在运营商数据库中记录,确保基站能够验证用户身份。

2、APP中本机号码一键登录的实现流程

在这里插入图片描述

1)获取手机掩码并唤起授权页

当用户打开APP需要登录的时候,APP会取运营商那里查询用户的手机号码掩码,运营商验证通过之后将当前的手机号掩码返回给APP并在认证的运营商的认证SDK上缓存手机号的掩码,最后就是展示给用户手机号的掩码,如下图所示的展示的手机号掩码:
在这里插入图片描述

(2)获取手机号掩码的token

用户点击“本机号码一键登录”按钮之后,APP发送授权请求到运营商服务器上,运营商验证通过之后返回手机号掩码和手机号掩码对应的token给应用APP。

(3)获取手机号的应用授权token_a

应用APP携带手机号掩码token发起登录请求到手机APP服务器上,然后手机APP服务器上通过携带手机号掩码token、应用id和签名请求运营商服务器。运营商服务器验证通过之后返回完整的手机号码给手机APP服务器,然后手机APP服务器生成对应的应用授权token_a,并返回应用授权token_a给APP,APP缓存应用授权token_a并提示登录成功。

(4)APP携带应用授权token_a访问服务器:

每当APP请求访问手机APP服务器的时候,客户端都会带着token_a访问服务器,服务端验证token_a同通过后便让请求访问。

至此就完成了本机号码一键登录请求的流程。

结论:

(1)本机号码一键登录是实现不用记复杂的密码,不送接收验证码,真正的实现2秒轻松的登录。

(2)本机号码一键登录经过获取手机掩码、获取手机号掩码的token、获取手机号的应用授权token_a等几个关键步骤后实现登录流程。

(3)三个运营商的都有各自的开放平台(移动 - 互联网能力开放平台、电信-天翼账号开放平台、联通-WO+开放平台),如果要兼容三大运营商就需要分别接入三个SDK,目前已经有了第三方整合了三大运营商认证能力的第三方SDK(常见的有阿里-号码认证服务、创蓝-闪验、极光-极光认证、mob-秒验)。

### 微信本机号码一键登录实现方式及SDK集成教程 微信本机号码一键登录功能是通过微信提供的开放平台能力实现的,主要基于微信用户授权机制和运营商网关认证技术。以下是关于如何使用微信本机号码实现一键登录功能的详细说明,包括实现原理、技术要点以及SDK集成教程。 #### 1. 实现原理 微信本机号码一键登录功能的核心在于结合微信的身份认证能力和运营商的网关认证能力。当用户点击“一键登录”按钮时,系统会调用微信开放平台接口,请求用户授权。授权成功后,微信将用户的本机手机号码通过运营商网关验证后返回给应用[^3]。整个流程无需用户手动输入验证码或手机号码,提升了用户体验。 #### 2. 技术要点 - **用户授权**:用户需明确授权应用获取其本机手机号码。 - **运营商网关认证**:通过运营商的数据网关进行实时校验,确保手机号码的真实性。 - **安全性保障**:所有数据传输均采用加密协议,确保用户隐私安全。 - **低延迟**:整个认证过程通常在3秒内完成,提供高效的用户体验。 #### 3. SDK集成教程 以下是微信本机号码一键登录功能的SDK集成步骤: ##### 3.1 注册开发者账号 开发者需要先在微信开放平台注册账号,并创建应用以获取`AppID`和`AppSecret`。这些信息将在后续集成中使用[^4]。 ##### 3.2 引入SDK 下载并引入微信提供的官方SDK文件。例如,在Android项目中,可以通过以下方式引入: ```gradle dependencies { implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+' } ``` ##### 3.3 配置权限 确保在应用的`AndroidManifest.xml`文件中添加必要的权限声明: ```xml <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> ``` ##### 3.4 初始化SDK 在应用启动时初始化微信SDK,并绑定`AppID`: ```java public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); IWXAPI api = WXAPIFactory.createWXAPI(this, "YOUR_APP_ID", true); api.registerApp("YOUR_APP_ID"); } } ``` ##### 3.5 调用一键登录接口 在需要实现一键登录的功能页面中,调用微信提供的接口。以下是一个简单的示例代码: ```java // 调起微信本机号码登录 SendAuth.Req req = new SendAuth.Req(); req.scope = "snsapi_userinfo"; // 授权范围 req.state = "wechat_sdk_demo"; // 自定义状态值 api.sendReq(req); // 处理回调结果 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == Constants.REQUEST_AUTH) { if (api.handleIntent(data, this)) { String code = data.getStringExtra("code"); // 获取授权code // 使用code换取access_token和openid } } } ``` #### 4. 注意事项 - 确保应用已通过微信开放平台审核,并具备相关权限。 - 用户设备需支持运营商网关认证功能,且处于正常联网状态。 - 在实际开发中,建议对返回数据进行严格校验,避免因网络异常导致的错误[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

画江湖Test

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值