Skip to main content

开放平台-用户授权

只有需要真实京东用户授权时才需要走此流程,判断自己申请的接口是否需要用户授权,方法如下#

如下图接口文档所示,如果公共参数access_token为必填时,必须先进行用户授权流程,非必填时则不需要进行用户授权。#

app-detail.png

一. 前期准备#

京东健康-开放平台授权系统基于 OAuth2.0 协议标准构建,支持 JOS 网关接口授权调用及京东账号联合登录功能。对接前需完成以下准备:

  1. 注册开发者账号:在京东开放平台注册开发者账号。
  2. 应用审核:拥有一个已审核通过的应用,并获得相应的 AppKeyAppSecret
  3. 自动获取凭证:应用审核通过后自动获取 AppKeyAppSecret

二. 授权流程说明#

京东授权流程基于 OAuth2.0,允许京东用户使用京东身份安全登录第三方应用或服务。授权流程支持 authorization_code 模式,具体步骤如下:

  1. 发起授权请求:第三方应用发起京东授权请求,用户允许授权后,京东会重定向到第三方应用网站,并带上授权临时票据 code 参数。
  2. 获取 access_token:通过 code 参数、 AppIDAppSecret,调用 API 换取 access_token
  3. 接口调用:使用 access_token 进行接口调用,获取用户基本数据资源或实现基本操作。
  4. 企业 API 对接:若为企业 API 对接,可使用应用创建账号手动发起步骤 1 和 2,并定时刷新 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 攻击

返回说明

  • 用户允许授权后,重定向到指定的 redirect_uri,并添加 codestate 参数。
  • 若用户禁止授权,仅带上 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"}