文档列表
用户登录授权(新)
一.前期准备
开放授权系统是基于OAuth2.0协议标准构建的京东开放平台授权系统.支持JOS网关接口授权调用, 京东账号联合登录等功能
1.在进行京东开放系统对接的之前, 在京东开放平台注册开发者账号.
2.并拥有一个已审核通过的应用, 并获得相应的AppKey和AppSecret.
3.应用审核通过后会自动获取AppKey 与 AppSecret
二.授权流程说明
京东授权流程是基于OAuth2.0授权让京东用户使用京东身份安全登录第三方应用或服务, 在京东用户授权登录已接入京东Oauth2.0的第三方应用后, 第三方可以获取到用户的接口调用凭证(access_token), 通过access_token可以进行京东开放平台授权关系接口调用, 从而实现获取京东用户基本开放信息和帮助用户实现基础开放功能等.京东Oauth2.0授权目前支持authorization_code模式, 该模式整体流程为:
1.第三方发起京东授权请求, 京东用户允许授权第三方应用后,京东会拉起应用或重定向到第三方应用网站, 并且带上授权临时票据code参数
2.通过code参数加上AppID和AppSecret等, 通过API换取access_token
3.通过access_token进行接口调用, 获取用户基本数据资源或帮助用户实现基本操作
注:
1、请使用您在开普勒后台入驻并开通导购能力的京东账号,去进行开发者的接口权限调用,只有同一账号才能识别您的同一个客户身份。
2、此处所述的京东用户授权过程,是面向推广者B端客户角色去操作,并不针对您的消费者C用户,C用户无法看到该流程。此处是要求开发者使用客户账号完成授权,获取动态密匙,以便进行接口调用权限的管控。
三.调用示例
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 | 是 | 回调地址,请填写默认地址即可:http://kepler.jd.com/oauth/code.do |
scope | 是 | 应用的作用域(snsapi_base) |
state | 否 | 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验 |
返回说明:
用户允许授权后,会跳转到指定的redirect_uri并多添加两个参数code和state参数
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过期的处理说明,点击查看说明。
基础API
可自由调用的数据接口