首页 > 开发文档 > 用户授权(即将下线) > 用户登录授权(新)

用户登录授权(新)

.前期准备

开放授权系统是基于OAuth2.0协议标准构建的京东开放平台授权系统.支持JOS网关接口授权调用京东账号联合登录等功能

1.在进行京东开放系统对接的之前在京东开放平台注册开发者账号.

2.并拥有一个已审核通过的应用并获得相应的AppKeyAppSecret.

3.应用审核通过后会自动获取AppKey  AppSecret

.授权流程说明

京东授权流程是基于OAuth2.0授权让京东用户使用京东身份安全登录第三方应用或服务在京东用户授权登录已接入京东Oauth2.0的第三方应用后第三方可以获取到用户的接口调用凭证(access_token), 通过access_token可以进行京东开放平台授权关系接口调用从而实现获取京东用户基本开放信息和帮助用户实现基础开放功能等.京东Oauth2.0授权目前支持authorization_code模式该模式整体流程为:

1.第三方发起京东授权请求京东用户允许授权第三方应用后,京东会拉起应用或重定向到第三方应用网站并且带上授权临时票据code参数

2.通过code参数加上AppIDAppSecret通过API换取access_token

3.通过access_token进行接口调用获取用户基本数据资源或帮助用户实现基本操作

 

.调用示例

1.请求code

https://open-oauth.jd.com/oauth2/to_login?app_key=XXXXX&response_type=code&redirect_uri=XXXXX&state=20180416&scope=snsapi_base

参数说明:

参数

是否必须

说明

app_key

应用标识

response_type

固定为code

redirect_uri

回调地址,必须与开发者控制里的URL保持一致

scope

应用的作用域(snsapi_base|snsapi_union_login)

state

用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验

 

返回说明:

用户允许授权后,会跳转到指定的redirect_uri并多添加两个参数codestate参数

redirect_uri?code=CODE&state=STATE

若用户禁止授权,则会重定向后不会带上code参数仅会带上state参数

redirect_uri?state=STATE

 

2.通过code获取access_token

https://open-oauth.jd.com/oauth2/access_token?app_key=XXXXX&app_secret=XXXXX&grant_type=authorization_code&code=XXXXX

参数说明:

参数

是否必须

说明

app_key

应用标识

app_secret

应用密钥

grant_type

固定为authorization_code

code

为步骤1中获取的code

 

返回说明:

{

access_token: "a3207b6b5ad04249ad1dbf6a98248bea",

expires_in: 3600000,

refresh_token: "4ecbbab0e9e443159c518da1d10741ad",

scope: "snsapi_base",

open_id: "jos_dev"

}

返回参数说明:

参数

说明

access_token

接口调用令牌

expires_in

令牌有效时间单位秒

refresh_token

用户刷新access_token

scope

用户授权的作用域,使用逗号(,)分隔

open_id

授权用户唯一标识

 

错误返回样例:

{"code":40029,"msg":"invalid code",”uid”:”xxxxxx”}

 

3.刷新access_token有效期

https://open-oauth.jd.com/oauth2/refresh_token?app_key=XXXXX&app_secret=XXXXX&grant_type=refresh_token&refresh_token=XXXXX

参数说明:

参数

是否必须

说明

app_key

应用标识

app_secret

应用密钥

grant_type

固定为refresh_token

refresh_token

步骤2或前一次步骤3获取的refresh_token

返回说明:

{

access_token: "a3207b6b5ad04249ad1dbf6a98248bea",

expires_in: 3600000,

refresh_token: "4ecbbab0e9e443159c518da1d10741ad",

scope: "snsapi_base",

open_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

}

返回参数说明:

参数

说明

access_token

接口调用令牌

expires_in

令牌有效时间单位秒

refresh_token

用户刷新access_token

scope

用户授权的作用域,使用逗号(,)分隔

open_id

授权用户唯一标识

 

错误返回样例:

{"code":40029,"msg":"invalid code",”requestId”:”xxxx”}

四.常见问题

    1.access_token过期的处理说明,点击查看说明