Skip to main content

标准联合登陆

合作方对接文档:#

合作方需要给京东提供字段

  1. client_id
  2. client_secret
  3. appId (可选)

由合作方基于Oauth2.0协议, 提供三个接口 :

  1. 获取授权码
  2. 通过授权码获取accessToken
  3. 通过AccessToken获取用户openId及手机号

联调时可先联调接口2,3

大体流程:#

大体流程

用户视角:#

1.点击京东链接【可选的前置流程】

2.进入合作方授权页,点击授权

3.自动进入京东登录页,正常登陆

4.自动进入落地的H5页


接口详情:#

1.【可选的前置流程】用户点击[京东链接],跳转至合作方授权页#

适用: 最终落地页是由京东侧动态下发的情况

优势: 京东侧下发的落地页可以灵活变动

京东侧会通过接口或者线下提供链接地址:

https://京东域名/render/渠道标识?returnUrl={编码后的落地页链接}

当用户点击京东侧render链接的时候, 将重定向到合作方授权页,并附带参数:

重定向至合作方授权页地址如:https://合作方域名/oauth/authorize

链接路径上将携带参数(京东侧传给合作方):

参数名类型固定值是否必填说明
client_idString合作方提供的client_id
response_typeStringcode固定值
redirect_uriString合作方需重定向地址, 合作方可以无需关心它是如何构成的,当作链接字符串
用户授权后,只需要把code拼接到该字符串上并重定向就行
appIdString否[可选]用于同渠道数据隔离或应用隔离

即如:

https://合作方域名/oauth/authorize?client_id={合作方分配给京东的clientid}&redirect_uri={获取到code以后重定向到京东的地址}&response_type=code


2. 用户在合作方授权页面上对JD进行授权。#

用户在合作方页面上对JD进行授权, 同意授权后, 将code参数传递给京东链接即可。

合作方的授权页注意项:

  1. 由合作方控制用户需要点击授权或者跳过,以便合作方掌握时长间隔、账号风控等。如果之前已经授权过的需要跳过授权页面。
  2. 每次访问都应该经过此页。
  3. 授权码应当是一次性且有时限的。

如果有前置流程,拼接code值后,重定向地址为:

{returnUrl}&code={此处为合作方应当拼接的code}

如果没有前置流程,京东侧直接提供固定的returnUrl链接,合作方授权页同意后,带着授权码code直接重定向跳转到该链接即可

例如中国移动合作: https://ares-general.healthjd.com/oauth/callback/chinamobile?callbackUrl=https%3A%2F%2Fm.jd.com%2F&code= {此处为合作方应当拼接的code}

3. 用户跳转回jd地址后, JD通过授权码查询accesstoken:#


用户跳转回jd地址后, JD通过授权码查询accesstoken:

请求方式:GET

参数名类型固定值是否必填说明
codeString授权码
client_idStringID,合作方分配提供
client_secretString密钥,合作方分配提供
grant_typeStringauthorization_code请求类型,固定值
redirect_uriString

示例:

method: Get
https://合作方域名/oauth/token?grant_type=authorization_code&code={合作方的code}&client_id={client_id}&redirect_uri={redirect_uri}&client_secret={client_secret}
参数:code={授权码}client_id={client_id}client_secret={client_secret}grant_type=authorization_coderedirect_uri={redirect_uri}

响应返回值

参数类型说明
dataMap数据
--accessTokenStringtoken
--expireInSecondsInteger过期时间
codeString请求返回码
messageString请求返回信息
requestIdString请求唯一标识

示例:

{"data": {    "accessToken": "",    "expireInSeconds": 1800},"code": "0000","message": "成功","requestId": "a504dee9-826b-41c9-b3ee-cef797868706"}

4. JD通过AccessToken查询UserInfo#

请求方式:POST

参数名类型固定值是否必填说明
appIdString可选Appid
accessTokenStringToken

示例:

method: POST
https://合作方域名/oauth/user/info

JSON参数:

{"appId":"xxx(可选)","accessToken":"xxx"}

响应返回:

参数类型说明
dataMap数据
--mobilePhoneString手机号
--openIdString合作方用户唯一标识
--nameString用户名称

示例:

{"data":    {        "mobilePhone":"xxx",        "openId":"xxx",        "name":"xxx"    }}

说明:

唯一id String openId;

姓名 String name;

唯一手机号 String mobilePhone;


详细流程(以处方流程为例):#

大体流程