安全认证

功能: Oauth2.0认证

资源URL:

POST: v1/oauth/token

请求参数:

参数名 类型 说明
grant_type string 申请模式。client_credentials:客户端模式,refresh_token:刷新token,authorization_code:用户授权模式
scope string(可选) 申请权限列表,空格分隔,默认为public
_ string 当前时间,ISO8601格式,10分钟内有效。测试环境不检查
nostr string 随机字符串,6位,数字与字母组合,区分大小写
refresh_token string(刷新时必须) 申请token时下发的refresh_token字段
auth_code string(用户申请权限必须) 接入方下发的auth_code,用于获取用户信息

Scope 取值范围

Scope取值 访问权限 说明
public 默认 获取产品类型,获取ETA、价格预估等
rides.read 可选 获取用户的行程信息等
rides.request 可选 请求、取消、更新行程等
profile 可选 获取用户信息等

注: 如果接入方是代替用户叫车(用户与滴滴无直接交互),则scope必须包含完整的三项:public,rides.read,rides.request

请求token:

curl -X POST -H "Content-Type: application/json"
-H "Authorization: Bearer domain|{sign}"
-d '{"grant_type":"client_credentials","_":"2016-07-01T10:00:00+0800""nostr":"123abc"}'
'https://api.xiaojukeji.com/v1/oauth/token'

刷新token:

curl -X POST -H "Authorization: Bearer domain|{sign}" 
-H "Content-Type: application/json" 
-d '{"grant_type":"refresh_token","refresh_token":"43713d0303-49c60a08fe-835c9fc1fe","_":"2016-07-01T11:00:00+0800","nostr":"123abc"}' 
'https://api.xiaojukeji.com/v1/oauth/token'

用户token:

curl -X POST -H "Authorization: Bearer domain|{sign}" 
-H "Content-Type: application/json" 
-d '{"grant_type":"authorization_code","auth_code":"43713d0303-49c60a08fe-835c9fc1fe","_":"2016-07-01T11:00:00+0800","nostr":"123abc"}' 
'https://api.xiaojukeji.com/v1/oauth/token'

正常返回:

参数名 类型 说明
access_token string 授权token,请求其他接口时必须由header提交。平台token可以多个同时有效,用户token只最后一个有效
refresh_token string 刷新token,在access_token过期时使用,该token只一次有效,刷新之后会分配新的refresh_token,无有效期限制
expires_in_second int access_token有效时间,单位:秒
token_type string token类型,bear/mac,目前只支持bear类型
scope string token权限等级,与申请时一致

注: 申请token有频次限制,平台 <= 10次/天,个人 <= 5次/天,刷新 <= 10次/天,超过则封禁24小时

返回结果:

http状态

  • 200表示请求正确

  • 非200表示请求出错

HTTP/1.1 200 OK

Content-Type: application/json;charset=UTF-8

{

"access_token": "didiCB5DEFD8086CE8EAC49CFDCFFA3BF94E66BFC287113521F868B9257E8782D0DB978B81A04133BA5968D9B15B6A4655A9B3B8E7E856ED69BC1FF5848DC784C5080523D74F1AA6B2AC310219BAD3CDE24DF60E61A83B67565B0FC63DE417858FF4",
"refresh_token": "bd01a0d243-e4a056f463-138c7a00fd",
"expires_in_second": 259200,
"token_type": "bearer",
"scope": "public rides.read rides.request"
}

说明:

  1. 请求数据格式必须为json
  2. header中需包含接入方id和签名,Authorization: bearer test|{sign},bearer表示请求token类型,test为分配的接入方id,与签名sign用”|”连接
  3. 签名算法

php版本

function generalCreateSign( $aData = array(), $sKey = '' )
{
    if ( empty( $aData ) || ! is_string( $sKey ) ) { //签名数据不能为空,签名key必须为字符串
        return FALSE;
    }

    ksort( $aData ); //签名数据按键值字典顺序排序
    $str = '';
    foreach ( $aData as $k => $v ) {
        if ( empty( $v ) && $v !== 0 ) { //空值键不参与签名
            continue;
        }

        if ( is_array( $v ) ) { //如果键值是数组,编码成json(中文将编码成UTF-8)
            $v = json_encode( $v );
        }
        $str .= trim( $k ) . '=' . trim( $v ) . '&'; //键1=值1&键2=值2...
    }
    $str = trim( $str, '&' ); //去除字符串两端的&符号
    return md5( md5( $str ) . $sKey ); //2次md5,key为给接入方分配的签名key
}

results matching ""

    No results matching ""