一键登录统一接口
服务流程:业务方服务器收到客户端的 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;
}
 
    