资料库 API列表
联系我们
注册 登录

使用Authorization Code 方式获取 Access Token

使用场景

使用Authorization Code获取Access Token的授权验证流程又称Web Server Flow,适用于有server端的应用:web应用、有Server端的手机/桌面客户端应用等。

授权流程

Authorization Code 授权分为两步,首先获取Authorization Code,然后用Code换取Access Token。

官方流程示意图:

oauth2_4

交互图:

oauth2_code

请求步骤

请求数据包格式:

  • 请求地址:https://open.cnipr.com/oauth/authorize
  • 请求方法: GET
  • 请求参数:
    参数字段 是否必须 说明
    client_id 必须 用户登录后,接入应用成功后,分配的client_id。
    redirect_uri 必须 成功授权后的回调地址,必须跟注册client_id时填写的地址一致。
    response_type 必须 授权类型,此值固定为"code"
    state 可选 用于保持请求和回调的状态,授权请求成功后原样带回给第三方。
    该参数用于防止csrf攻击(跨站请求伪造攻击),强烈建议第三方带上该参数。

响应数据包格式:

  • 如果授权成功,授权服务器会将用户的浏览器重定向到redirect_uri,并带上code,openid和openkey等参数。例子如下:
    http:/www.myurl.com/example?code=CODE&openid=OPENID&openkey=OPENKEY
  • 返回参数:
    参数字段 说明
    code 用来换取access_token的授权码,有效期为10分钟
    openid 用户统一标识,可以唯一标识一个用户。网站或应用可将此ID进行存储,便于用户下次登录时辨识其身份。
    openkey 与openid对应的用户key,是验证openid身份的验证密钥
  • 错误码说明:
    接口调用有错误时,会返回code和msg字段,以Json格式返回。具体参见 OAuth2返回值码说明

请求数据包格式:

  • 请求地址:https://open.cnipr.com/oauth/access_token
  • 请求方法: GET
  • 请求参数:
    参数字段 是否必须 说明
    client_id 必须 应用注册时分配的client_id
    client_secret 必须 应用注册时分配的client_secret
    redirect_uri 必须 成功授权后的回调地址,必须跟注册client_id时填写的地址一致。
    grant_type 必须 授权类型,此固定值为authorization_code
    code 必须 通过上面第一步所获得的Authorization Code
    state 可选 用于保持请求和回调的状态,授权请求成功后原样带回给第三方。
    该参数用于防止csrf攻击(跨站请求伪造攻击),强烈建议第三方带上该参数。

响应数据包格式:

  • 如果请求成功,授权服务器会返回JSON格式的字符串,如下:
    {
    "status":STATUS,
    "message":MESSAGE,
    "expires_in":EXPIRES_IN,
    "refresh_token":REFRESH_TOKEN,
    "access_token":ACCESS_TOKEN
    }
  • 字符串参数说明:
    参数字段 说明
    access_token 访问资源API的凭证
    refresh_token 请求刷新令牌的凭证
    status 请求返回状态码,具体见附录
    message 请求返回信息描述
    expires_in access_token的过期时长,以秒为单位
  • 错误码说明:
    接口调用有错误时,会返回code和msg字段,以Json格式返回。具体参见 OAuth2返回值码说明
移动端/桌面端应用可以直接获得AccessToken,请参考Implicit Grant授权