首页 > 技术分享 > 原生PHP
收藏

PHP使用阿里云通信号码认证服务,实现H5|APP一键登录和本机号码验证功能

02/24 16:13
大潇博客 原创文章,转载请标明出处

最近使用云通信号码认证服务,完成了H5端和APP端手机号码一键登录功能,由于文档过于繁琐,缺少部分细节,且官方SDK还存在bug,所以还是记录一下整个功能的实现过程。


前端jssdk版本v2.0.2

后端使用PHP,由于项目过于老旧,所以使用了V1.0版本,具体版本号为1.8.109,仅要求PHP5.5以上版本


阿里云各PHP-SDK直通车:https://packagist.org/packages/alibabacloud/

打开后输入所需服务的sdk名称进行搜索,比如号码认证服务的sdk名称为:dypnsapi,点击搜索到的结果,打开即可看到现在的所有版本号,composer这些版本即可。

ps:为什么要进行这一步,因为在阿里云某些服务的文档中,给出的composer版本可能已不存在,通俗的说就是文档有bug,所以当composer报错sdk某个版本的包文件不存在时,就需要我们手动查找,若composer一切顺利,请忽略上面这些。


下面继续回到号码认真服务,首先登录阿里云管理平台,找到号码认证服务,在认证方案管理页面中,添加认证方案,必须完成此步骤,否则拿不到H5端获取spToken时所需的AccessToken和JwtToken。

IOS和Android也要创建认证方案,添加所需的参数,获取秘钥。

添加认证方案.png

phpsdk文档地址:https://api.aliyun.com/document/Dypnsapi/2017-05-25/GetAuthToken

phpsdk示例地址:https://api.aliyun.com/api/Dypnsapi/2017-05-25/GetAuthToken?sdkStyle=old&lang=PHP

H5一键登录文档地址:https://help.aliyun.com/document_detail/465280.html

H5号码校验文档地址:https://help.aliyun.com/document_detail/189796.html


H5一键登录过程:

1、打开页面,异步请求后端,通过php-sdk获取到AccessToken和JwtToken,返回给前端;

2、拿到AccessToken和JwtToken后,执行jssdk的checkLoginAvailable方法进行鉴权;

3、鉴权成功,执行jssdk的getLoginToken获取spToken,并拉起云通信的登录页面;

4、拿到spToken后,传给后端,通过php-sdk获取到用户手机号码;


H5号码校验过程:

1、打开页面,异步请求后端,通过php-sdk获取到AccessToken和JwtToken,返回给前端;

2、拿到AccessToken和JwtToken后,执行jssdk的checkAuthAvailable方法进行鉴权;

3、鉴权成功,通过jssdk的getVerifyToken方法,获取本机号码校验spToken;

4、前三步是打开页面就要执行的,然后是用户输入手机号码,将号码和spToken一起传给后端,通过php-sdk验证合法性

校验成功返回参数示例:

号码认证校验成功.png

校验失败返回参数示例:

号码认证校验失败.png


APP端实现方法:

在APP中使用云通信号码认证服务SDK,可以拿到手机号码的前三位和后四位,并非完整手机号,只能用做页面展示,例如:138****3838,想拿到整个手机号码,需通过在App端SDK获取到登录AccessToken,传给后端PHP,再通过phpsdk获取手机号。


代码展示:

代码略多,文章中不多太多赘述,贴出代码结合备注理解。

后端PHP代码:

云通信H5一键登录PHPSDK实现方法.jpg



补充APP端获取手机号代码:

APP一键取号.jpg



前端JS代码:

云通信H5一键登录JSSDK实现方法.jpg


接口路径可忽略,实际使用中换成正式路径,下面提供demo,可用电脑浏览器下载


下载地址:dypnsapi

打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311