授权访问

介绍 卡游售卖机开放平台 对接的授权方式

授权流程说明

卡游售卖机开放平台 OAuth2.0授权让 卡游售卖机开放平台 用户可以使用 卡游售卖机开放平台 用户身份安全访问第三方应用或者网站,第三方应用或者网站可以获取到用户的接口调用凭证(accessToken),通过accessToken可以进行 卡游售卖机开放平台 卡游售卖机开放平台 授权接口调用,从而可实现获取 卡游售卖机开放平台 用户基本开放信息等功能。 卡游售卖机开放平台 OAuth2.0授权目前支持authorization_code模式和client_credentials模式,适用于拥有服务端的第三方应用授权。

client_credentials模式

该模式的流程如下:

  1. 向 卡游售卖机开放平台 申请账号:clientId、clientSecret和appid;
  2. 通过 grantType 参数加上clientId、clientSecret等,通过API换取accessToken;
  3. 通过accessToken进行接口调用,获取业务数据等信息。

第一步:账号申请

请联系 卡游售卖机开放平台 相关技术或者商务人员,申请账号:clientId、clientSecret和appid。

第二步: 通过code获取accessToken

通过 grantType 参数加上clientId、clientSecret获取accessToken

  • 接口

GET /api/oauth/token?grantType=client_credentials&appid=APPID

  • 请求参数

    • Header:
    参数名称参数值是否必填示例备注
    AuthorizationBasic dGVzdF9jbGllbnQ6dGVzdF9zZWNyZXQ=Basic dGVzdF9jbGllbnQ6dGVzdF9zZWNyZXQ=base64_encode(clientId:clientSecret)
    • Query:
    参数名称是否必填示例备注
    grantTypeclient_credentials授权码则传authorization_code
    appid10200第三方应用id
  • 返回数据

    名称类型是否必须备注
    codenumber返回码
    msgString返回信息
    timestampnumber时间戳
    dataobject
    accessTokenString
    refreshTokenString
    expireInnumber有效时长
  • 返回说明

    • 正确的返回:
        {
            "code": 0,
            "msg": "success",
            "data": {
                "accessToken": "0b05dd7f9bd241f19194b7bfd5518b3b",
                "refreshToken": "0df3b48db66a4c8082398838487f145b",
                "expireIn": 7200
            },
            "timestamp": 1607942001
        }
    
    • 错误的返回:
        {
            "code": 500,
            "msg": "client info is invalid!",
            "timestamp": 1608006362
        }
    
  • 刷新accessToken有效期 accessToken是调用授权接口的调用凭证,由于accessToken有效期(目前为2个小时)较短,当accessToken超时后,可以使用refreshToken进行刷新,accessToken刷新结果有两种:

如果accessToken已超时,那么进行refreshToken会获取一个新的accessToken以及新的refreshToken,新的超时时间。 refreshToken拥有较长的有效期(30天), 当refreshToken失效后,需要用户重新授权通过code获取AccessToken。

  • 请求方法 通过refreshToken后,请求一下接口进行refreshToken:
  • 接口

GET /api/oauth/refresh?grantType=refresh_token&refreshToken=REFRESH_TOKEN

  • 请求参数

    • Header:
    参数名称参数值是否必填示例备注
    AuthorizationBasic dGVzdF9jbGllbnQ6dGVzdF9zZWNyZXQ=Basic dGVzdF9jbGllbnQ6dGVzdF9zZWNyZXQ=base64_encode(clientId:clientSecret)
    • Query:
    参数名称是否必填示例备注
    grantTyperefresh_token授权模式使用refresh_token
    refreshToken54be978ff01f44fa88d880f44170b2dd刷新码
  • 返回数据

    名称类型是否必须备注
    codenumber返回码
    msgString返回信息
    timestampnumber时间戳
    dataobject
    accessTokenString
    refreshTokenString
    expireInnumber有效时长
  • 返回说明

    • 正确的返回:
        {
            "code": 0,
            "msg": "success",
            "data": {
                "accessToken": "0b05dd7f9bd241f19194b7bfd5518b3b",
                "refreshToken": "0df3b48db66a4c8082398838487f145b",
                "expireIn": 7200
            },
            "timestamp": 1607942001
        }
    
    • 错误的返回:
        {
            "code": 500,
            "msg": "client info is invalid!",
            "timestamp": 1608006362
        }
    
    • 注意:

      1. clientSecret是应用接口使用的秘钥,泄露后将可能导致应用数据泄露等高风险后果;存储在客户端极有可能被恶意窃取;

      2. accessToken为用户授权第三方应用发起接口调用的凭证(相当于用户态),存储在客户端可能出现恶意获取accessToken后导致用户数据泄露风险同上。

      3. refreshToken为用户授权第三方应用的长效凭证,仅用于刷新accessToken,但泄露后相当于accessToken泄露,风险同上。

第三步:通过accessToken调用接口

获取accessToken后进行接口调用,前提:

  1. accessToken有效且未超时
  2. 卡游售卖机开放平台 用户已授权第三方应用访问响应接口资源。
  • 调用获取用户基础信息接口
  • 接口

GET /openapi/platform/user/baseinfo

  • 请求参数

    • Header:
    参数名称参数值是否必填示例备注
    AuthorizationBearer 12f7764bd76e4350bd87772390444d7cBearer 12f7764bd76e4350bd87772390444d7cBearer accessToken
  • 返回数据

    名称类型是否必须备注
    codenumber返回码
    msgString返回信息
    timestampnumber时间戳
    dataobject
    idnumber用户id
    mobileString手机号
    nicknameString昵称
  • 返回说明

    • 正确的返回:
        {
            "code": 0,
            "msg": "success",
            "data": {
                    "id": 100001,
                    "mobile": "b30607fcb81824963fa77ca577fcabaa",
                    "nickname": "182****9281"
            },
            "timestamp": 1606450537
        }
    
    • 错误的返回:
        {
            "code": 500,
            "msg": "token is timeout. please retry.",
            "timestamp": 1608008002
        }
    

authorization_code模式

该模式的流程如下:

  1. 卡游售卖机开放平台 用户请求访问第三方应用, 如果用户尚未授权则弹出是否允许第三方应用获取用户信息;
  2. 卡游售卖机开放平台 用户同意授权, 卡游售卖机开放平台 则会重定向到第三方网站,并且带上授权临时票据code参数(code有效时长5分钟);
  3. 通过code参数加上clientId、clientSecret等,通过API换取accessToken;
  4. 通过accessToken进行接口调用,获取用户基本信息等信息。
  • 获取accessToken时序图:

第一步:请求code

当 卡游售卖机开放平台 用户同意授权访问第三方应用,则 卡游售卖机开放平台 授权平台跳转到第三方应用地址,同时带上授权临时票据(code),应用地址域名需要与提交审核时填写的域名一致。

第二步: 通过code获取accessToken

通过code获取accessToken

  • 接口

GET /api/auth/oauth/token?grantType=authorization_code&code=CODE&appid=APPID

  • 请求参数

    • Header:
    参数名称参数值是否必填示例备注
    AuthorizationBasic dGVzdF9jbGllbnQ6dGVzdF9zZWNyZXQ=Basic dGVzdF9jbGllbnQ6dGVzdF9zZWNyZXQ=base64_encode(clientId:clientSecret)
    • Query:
    参数名称是否必填示例备注
    grantTypeauthorization_code授权码则传authorization_code
    code54be978ff01f44fa88d880f44170b2dd授权码模式code必须传
    appid10200第三方应用id
  • 返回数据

    名称类型是否必须备注
    codenumber返回码
    msgString返回信息
    timestampnumber时间戳
    dataobject
    accessTokenString
    refreshTokenString
    expireInnumber有效时长
  • 返回说明

    • 正确的返回:
        {
            "code": 0,
            "msg": "success",
            "data": {
                "accessToken": "0b05dd7f9bd241f19194b7bfd5518b3b",
                "refreshToken": "0df3b48db66a4c8082398838487f145b",
                "expireIn": 7200
            },
            "timestamp": 1607942001
        }
    
    • 错误的返回:
        {
            "code": 500,
            "msg": "client info is invalid!",
            "timestamp": 1608006362
        }
    
  • 刷新accessToken有效期 accessToken是调用授权接口的调用凭证,由于accessToken有效期(目前为2个小时)较短,当accessToken超时后,可以使用refreshToken进行刷新,accessToken刷新结果有两种:

如果accessToken已超时,那么进行refreshToken会获取一个新的accessToken以及新的refreshToken,新的超时时间。 refreshToken拥有较长的有效期(30天), 当refreshToken失效后,需要用户重新授权通过code获取AccessToken。

  • 请求方法 通过refreshToken后,请求一下接口进行refreshToken:
  • 接口

GET /api/auth/oauth/refresh?grantType=refresh_token&refreshToken=REFRESH_TOKEN

  • 请求参数

    • Header:
    参数名称参数值是否必填示例备注
    AuthorizationBasic dGVzdF9jbGllbnQ6dGVzdF9zZWNyZXQ=Basic dGVzdF9jbGllbnQ6dGVzdF9zZWNyZXQ=base64_encode(clientId:clientSecret)
    • Query:
    参数名称是否必填示例备注
    grantTyperefresh_token授权模式使用refresh_token
    refreshToken54be978ff01f44fa88d880f44170b2dd刷新码
  • 返回数据

    名称类型是否必须备注
    codenumber返回码
    msgString返回信息
    timestampnumber时间戳
    dataobject
    accessTokenString
    refreshTokenString
    expireInnumber有效时长
  • 返回说明

    • 正确的返回:
        {
            "code": 0,
            "msg": "success",
            "data": {
                "accessToken": "0b05dd7f9bd241f19194b7bfd5518b3b",
                "refreshToken": "0df3b48db66a4c8082398838487f145b",
                "expireIn": 7200
            },
            "timestamp": 1607942001
        }
    
    • 错误的返回:
        {
            "code": 500,
            "msg": "client info is invalid!",
            "timestamp": 1608006362
        }
    
    • 注意:

      1. clientSecret是应用接口使用的秘钥,泄露后将可能导致应用数据泄露等高风险后果;存储在客户端极有可能被恶意窃取;

      2. accessToken为用户授权第三方应用发起接口调用的凭证(相当于用户态),存储在客户端可能出现恶意获取accessToken后导致用户数据泄露风险同上。

      3. refreshToken为用户授权第三方应用的长效凭证,仅用于刷新accessToken,但泄露后相当于accessToken泄露,风险同上。

第三步:通过accessToken调用接口

获取accessToken后进行接口调用,前提:

  1. accessToken有效且未超时
  2. 卡游售卖机开放平台 用户已授权第三方应用访问响应接口资源。
  • 调用获取用户基础信息接口
  • 接口

GET /openapi/platform/user/baseinfo

  • 请求参数

    • Header:
    参数名称参数值是否必填示例备注
    AuthorizationBearer 12f7764bd76e4350bd87772390444d7cBearer 12f7764bd76e4350bd87772390444d7cBearer accessToken
  • 返回数据

    名称类型是否必须备注
    codenumber返回码
    msgString返回信息
    timestampnumber时间戳
    dataobject
    idnumber用户id
    mobileString手机号
    nicknameString昵称
  • 返回说明

    • 正确的返回:
        {
            "code": 0,
            "msg": "success",
            "data": {
                    "id": 100001,
                    "mobile": "b30607fcb81824963fa77ca577fcabaa",
                    "nickname": "182****9281"
            },
            "timestamp": 1606450537
        }
    
    • 错误的返回:
        {
            "code": 500,
            "msg": "token is timeout. please retry.",
            "timestamp": 1608008002
        }
    
  • 调用获取用户信息接口

  • 接口

GET /openapi/platform/user/detail

  • 请求参数

    • Header:
    参数名称参数值是否必填示例备注
    AuthorizationBearer 12f7764bd76e4350bd87772390444d7cBearer 12f7764bd76e4350bd87772390444d7cBearer accessToken
  • 返回数据

    名称类型是否必须备注
    codenumber返回码
    msgString返回信息
    timestampnumber时间戳
    dataobject
    idnumber用户id
    mobileString手机号
    nicknameString昵称
    realNameString真实姓名
    idCardString身份证
    gendernumber性别,1=男,2=女
    levelBoolean是否实名认证0是未实名1是实名2是实人实名
  • 返回说明

    • 正确的返回:
        {
            "code": 0,
            "msg": "success",
            "data": {
                "id": 100001,
                "mobile": "b30607fcb81824963fa77ca577fcabaa",
                "nickname": "182****9281",
                "realName": "0d909397a47de2aad09f7e189f035720",
                "idCard": "b8256c661944a5c2e0dbcd70ea045da7244ee3ba243f4eaf4b4fe22c7615fd2e",
                "gender": 1,
                "level": 2
            },
            "timestamp": 1606450537
        }
    
    • 错误的返回:
        {
            "code": 500,
            "msg": "token is timeout. please retry.",
            "timestamp": 1608008002
        }