一键登录统一接口
服务流程:业务方服务器收到客户端的 token 后,将 token 透传给企业服务,各运营商所需传参见下表,业务方服务器收到手机号后完成登录,将手机号下发给客户端。
url: https://cosmos-open.immomo.com/login/index/universeLogin
method: POST
source 参数:
- 中国移动:"10086"
- 中国联通:"10010"
- 中国电信:"10000"
1. SDK V2版本接口
请求参数:
参数 | 类型 | 备注 |
---|---|---|
appid | string | 企业服务 appid |
sdkJson | string | 客户端透传的参数 |
source | string | 10010 |
client | string | 客户端 ios/android |
sign | string | 签名 |
返回数据:
调用成功:
{
"ec": 0,
"em": "success",
"timesec": 1574138176,
"data": {
"code": "0",
"msg": "调用成功",
"mobile": "18600xxxxxx"
}
}
调用失败:
{
"ec": "104201",
"em": "ebda9470162449d89fca27a08256ec1f",
"timesec": 1575427860,
"data": {
"code": "104201",
"msg": "ebda9470162449d89fca27a08256ec1f"
}
}
2. 以下是旧版本,运营商直连的接口
2.1. 中国移动参数
请求参数:
参数 | 类型 | 备注 |
---|---|---|
token | string | token |
appid | string | 企业服务 appid |
source | string | 10086 |
client | string | 客户端 ios/android |
sign | string | 签名 |
返回数据:
调用成功:
{
"ec": 0,
"em": "success",
"data": {
"code": "103000",
"msg": "xxxxx",
"mobile": "xxxxzxsxzzx"
}
}
调用失败:
{
"ec": "201",
"em": "token已失效",
"timesec": 1574137352,
"data": {
"code": "201",
"msg": "token已失效"
}
}
2.2. 中国联通参数
请求参数:
参数 | 类型 | 备注 |
---|---|---|
appid | string | 企业服务 appid |
token | string | token |
source | string | 10010 |
client | string | 客户端 ios/android |
sign | string | 签名 |
返回数据:
调用成功:
{
"ec": 0,
"em": "success",
"timesec": 1574138176,
"data": {
"code": "0",
"msg": "调用成功",
"mobile": "18600xxxxxx"
}
}
调用失败:
{
"ec": "104201",
"em": "ebda9470162449d89fca27a08256ec1f",
"timesec": 1575427860,
"data": {
"code": "104201",
"msg": "ebda9470162449d89fca27a08256ec1f"
}
}
2.3. 中国电信参数
请求参数:
参数 | 类型 | 备注 |
---|---|---|
appid | string | 企业服务 appid |
access_code | string | access_code |
auth_code | string | auth_code |
source | string | 10000 |
client | string | 客户端 ios/android |
sign | string | 签名 |
返回数据:
调用成功:
{
"ec": 0,
"em": "success",
"timesec": 1574234784,
"data": {
"code": 0,
"msg": "操作成功",
"mobile": "1730XXXXXXX"
}
}
调用失败:
{
"ec": 51114,
"em": "获取数据不存在",
"timesec": 1574234170,
"data": {
"code": 51114,
"msg": "获取数据不存在"
}
}
3. 另注:
- 取号阶段运营商返回的token过期失效错误码,服务端统一封装code 10101001 返回。提示:接入方可以按需对此状态码处理,比如重新获取运营商token,降级到短信等,提升一键登录成功率。
- 电信 accesscode过期时间默认1小时;联通 token过期时间默认1小时;移动 授权取的token有效期2分钟,取号的缓存有效期安卓2天,iOS一小时
4. 签名生成方法
传参去掉 sign 后,参数按键名升序排序
拼接为 query string 形式
appid=264786582&cn=%E8%BF%99%E6%98%AF+%E4%B8%AD%E6%96%87&developerId=598097634
拼接 appKey,例如"XWH7bAO34KuhYBYO"
appid=264786582&cn=%E8%BF%99%E6%98%AF+%E4%B8%AD%E6%96%87&developerId=598097634XWH7bAO34KuhYBYO
把拼接后的字符串转换为小写
计算 sha1
php demo
function getSign($params, $appKey) {
$pairs = [];
$setParams = [];
foreach ($params as $key => $value) {
if (empty($value)) {
continue;
}
if (in_array($key, ['sign'])) {
continue;
}
$setParams[$key] = $value;
}
ksort($setParams);
foreach ($setParams as $key => $value) {
$pairs[] = $key . "=" . $value;
}
$string = implode('&', $pairs) . $appKey;
$string = strtolower($string);
$newSign = sha1($string);
return $newSign;
}