一键登录统一接口

服务流程:业务方服务器收到客户端的 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. 另注:

  1. 取号阶段运营商返回的token过期失效错误码,服务端统一封装code 10101001 返回。提示:接入方可以按需对此状态码处理,比如重新获取运营商token,降级到短信等,提升一键登录成功率。
  2. 电信 accesscode过期时间默认1小时;联通 token过期时间默认1小时;移动 授权取的token有效期2分钟,取号的缓存有效期安卓2天,iOS一小时

4. 签名生成方法

  1. 传参去掉 sign 后,参数按键名升序排序

  2. 拼接为 query string 形式

    appid=264786582&cn=%E8%BF%99%E6%98%AF+%E4%B8%AD%E6%96%87&developerId=598097634

  3. 拼接 appKey,例如"XWH7bAO34KuhYBYO"

    appid=264786582&cn=%E8%BF%99%E6%98%AF+%E4%B8%AD%E6%96%87&developerId=598097634XWH7bAO34KuhYBYO

  4. 把拼接后的字符串转换为小写

  5. 计算 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;
}
@Copyright © cosmos 2019 all right reserved,powered by Gitbook修订时间: 2023-11-01 16:36:05

results matching ""

    No results matching ""