WAP(H5)端应用开发指南
交互流程图
一张图看懂WAP(H5)对接:通过拼装参数后的URL显示天翼账号登录WAP(H5)页面,用户认证成功后开发者获取code,通过服务器使用code换取accessToken,再通过“获取用户信息”API接口拿accessToken换取手机号码等信息。
注意:
“蓝色流程”由合作方实现对接,流程序号与本文标题序号章节相对应。
“绿色流程”由天翼账号实现,合作方可进行了解。
1 接入准备
2.应用场景
主要应用于合作方WAP页面接入天翼账号登录认证的场景,如天翼云WAP版和189邮箱WAP版。目前天翼账号WAP门户(e.189.cn)已经接入WAP登录框,可以进行体验。
3 能力对接
3.1 对接指引(获取code)
3.1.1 接口说明
应用账号登录模块,通常包括账号登录及注销功能,因此,天翼账号在WAP应用对接上,分别提供WAP登录页接口和注销登录账号接口,协助合作方应用分别实现登录及注销功能,以提供完整的账号使用流程。
3.1.2 实现WAP应用登录
合作方WAP应用在用户点击登录时,跳转到天翼账号提供的统一的WAP登录页,实现WAP应用登录,用户登录天翼账号后重定向返回给合作方认证处理结果。
接口定义
接口名称 | autoLogin.do |
接口描述 | WAP登录页接口,应用于WAP登录界面 |
承载协议 | HTTPS |
承载网络 | 公网 |
请求方式 | GET |
数据格式 | redirect |
WAP接口URL |
https://open.e.189.cn/api/logbox/oauth2/separate/autoLogin.do |
请求参数:包含公共请求参数和非公共请求参数
1)公共请求参数:
天翼账号支持以GET方式提交数据,请求参数个数固定,如下表所述:
字段标识 | 说明 |
---|---|
appId | 开发者在天翼账号开放平台申请获取的应用ID |
clientType | 统一为:20100 |
format | 统一为:redirect(用于重定向接口的显示说明) |
version | 调用的接口版本号:v2.1 |
paras | 使用appSecret对所有传入参数采用XXTea加密,并且按照接口详细规范中定义的参数(除appId、clientType、format、version、sign)拼接,不要求参数顺序。 例如:paras = XXTea((a=value1&b=value2&…),appSecret) 备注:appSecret转16进制后进行加密,加密算法后的值只有数字和全大写字母 |
sign |
签名算法: sign=HMAC-SHA1(appId+clientType+format+version+paras,appSecret).toUpperCase()
备注:注意保持签名的各字段顺序正确,签名算法后的值只有数字和全大写字母 |
2)非公共请求参数(paras中需要加密的参数):
字段标识 | 说明 | 数据类型 | 长度 | 可空 |
---|---|---|---|---|
timeStamp | 时间戳,毫秒 | Long | 18 | N |
returnURL |
重定向返回URL(returnURL如带参数,整个returnURL需进行URL编码) |
String | 1024 | N |
templateId |
模板ID,若需新增模板,需提供模板给予综合平台进行模板配置 默认:0 |
Integer |
1 | Y |
loginType |
其他登录类型 1|2:免密登录失败后,优先账密登录,保留短信登录 2|1:免密登录失败后,优先短信登录,保留账密登录 1:免密登录失败后,只有账密登录,无短信登录 2:免密登录失败后,只有短信登录,无账密登录 默认:1|2 |
String |
3 | Y |
qaUrl |
遇到问题链接 |
String |
1024 | Y |
otherLoginUrl |
其他登录方式链接(免密失败后跳转的自定义链接) |
String |
1024 | Y |
state |
用于保持请求和回调的状态,登录请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验 |
String | 32 | Y |
响应参数:
字段名称 | 描述 |
---|---|
appId | 开发者在天翼账号开发平台(join.e.189.cn)申请获取的应用ID。 |
paras | 使用appSecret对所有传入参数采用XXTea加密,并且按具体接口详细规范中定义的参数拼接,不要求参数顺序 例如:paras=XXTea((a=value1&b=value2&…),appSecret)。 |
sign | 签名算法公式:HMAC-SHA1(appId+paras,appSecret) |
paras解密得到如下数据:
字段标识 | 说明 | 数据类型 | 长度 | 可空 |
---|---|---|---|---|
result | 0:成功1:失败 | Integer | 10 | N |
timeStamp |
时间戳yyyy-MM-dd HH:mm:ss,其中HH 取值为00-23,时区为东八区(接入方必须判断时间戳的有效性,以防重放攻击) |
String |
19 |
N |
code |
2分钟内一次有效(服务端调用) |
String |
32 | N |
state |
用于保持请求和回调的状态 |
String |
32 | Y |
返回结果
重定向到指定的URL,如http://returnURL?appId=123¶s=123&sign=123。returnURL按照本接口规范定义的参数处理方式接收和处理。
3.1.3 实现注销登录接口
用户在合作方WAP网站应用登录后需要退出登录时,合作方调用此接口,请求天翼账号注销用户登录,天翼账号清除用户登录信息后,根据传入的returnUrl返回合作方 。
请求参数:包含公共请求参数和非公共请求参数
接口定义
接口名称 | unifyAccountLogout.do |
接口描述 | 注销登录接口,为合作方注销登录令牌,清除登录用户信息(该接口需在前端/浏览器调用) |
承载协议 | HTTPS |
承载网络 | 公网 |
请求方式 | GET |
数据格式 | redirect |
约束 | 用户已登录 |
WAP接口URL | https://open.e.189.cn/api/account/unifyAccountLogout.do |
请求参数:包含公共请求参数和非公共请求参数
1)公共请求参数:
字段标识 | 说明 |
---|---|
appId | 开发者在天翼账号开放平台申请获取的应用ID |
clientType | 客户端类型:20100 |
format | 目前仅支持json格式,统一为:redirect(用于重定向接口的显示说明) |
version | 调用的接口版本号:v1.1 |
paras | 使用appSecret对所有传入参数采用XXTea加密,并且按照接口详细规范中定义的参数(除appId、clientType、format、version、sign)拼接,不要求参数顺序。 例如:paras = XXTea((a=value1&b=value2&…),appSecret) |
sign | 签名算法: sign=HMAC-SHA1(appId+clientType+format+version+paras,appSecret).toUpperCase() 备注:注意保持签名的各字段顺序正确,签名算法后的值转换为全大写 |
2)非公共请求参数(paras中需要加密的参数):
字段标识 | 说明 | 数据类型 | 长度 | 可空 |
---|---|---|---|---|
timeStamp | 时间戳,毫秒 | Long | 18 | N |
returnURL | 重定向返回URL(returnURL如带参数,整个returnURL需进行URL编码) | String | 1024 | N |
响应参数:
字段名称 | 描述 |
---|---|
appId | 开发者在天翼账号开放平台申请获取的应用ID |
paras | 使用appSecret对所有传入参数采用XXTea加密,并且按具体接口详细规范中定义的参数拼接,不要求参数顺序 例如:paras=XXTea((a=value1&b=value2&…),appSecret)。 |
sign | 签名算法公式:HMAC-SHA1(appId+paras,appSecret) |
paras参数解密得到以下数据:
字段标识 | 说明 | 数据类型 | 长度 | 可空 |
---|---|---|---|---|
result | 0:成功1:失败 | Integer | 10 | N |
timeStamp | 时间戳yyyy-MM-dd HH:mm:ss,其中HH 取值为00-23,时区为东八区(接入方必须判断时间戳的有效性,以防重放攻击) | String | 19 | N |
返回结果:
重定向到传入的returnURL,如http://returnURL?appId=123¶s=123&sign=123。returnURL按照本接口规范定义的参数处理方式接收和处理。
3.2通过code获取accessToken
通过code获取accessToken,具体可到以下文档了解:
通过获取用户信息接口,在用户登录后可以获取用户昵称、手机号码、头像等信息,需要对接获取用户信息能力,具体可到以下文档了解:
介绍
1.导入lib里的jar包
2.完善com._21cn.open.config.LoginboxConfig里TODO处的参数
3.执行com._21cn.open.main.WapLoginbox的main方法可得WAP登录框地址
介绍
1.new LoginBoxDemo($appId, $appSecret, $returnURL)
2.执行$LoginBoxDemo->wap()方法可得WAP登录框地址