首页 > 开放介绍 > 开放登录

开放登录

一、授权登陆介绍

如果您的应用和京东的授权登陆对接后,需要获取一些用户相关的信息,为保证数据的安全性和隐私性,需要取得用户的同意,引导用户授权。授权登陆采用国际通用的OAuth2.0标准协议,目前仅支持网站系统。如果要了解更多关于OAuth2.0的技术说明,请参考官方网站  https://oauth.net/2/ 目前,授权登陆的OAuth2.0支持以下方式获取AccessToken。

二、创建应用

1. 注册开发者

首先进入https://jos.jd.com页面,注册成为开发者,按照提示输入相关信息。


2. 创建应用

根据需要对接的业务,按照相关流程创建应用。




三、申请授权登陆权限

发送授权登陆对接权限申请至open@jd.com并抄送京东相关业务联系人,进行权限审核

授权登陆对接权限数申请表

业务描述

 

业务流程简图

 

应用/网站名称

 

网站地址

 

用户量级

 

京东用户名

 

公司名称

 

联系人

 

联系电话

 

联系邮箱

 

Appkey

 

四、获取“京东登录”按钮

1. 使用京东提供的标准“京东登录”按钮图标说明
我们为您提供了下面几种标准的“京东登录”图标,供开发者下载使用。
注意:

1). 我们不提供包含所有规格标识的图片包下载,请开发者根据需要选择合适的标识下载。

2). 以下各种规格的图标版权都归京东所有,请勿更改,否则京东有权单方面中止开放登录服务。

2、京东按钮图标示例

3、京东按钮下载

230*48京东登录按钮

170*32京东登录按钮

120*24京东登录按钮


105*16京东登录按钮

63*24京东登录按钮

50*16京东登录按钮

16*16京东登录按钮

五、获取京东用户信息

1、获取授权code

1.1获取授权码code的参数

参数名称

参数选项

描述

response_type

必须

此流程下,该值固定为code

client_id

必须

即创建应用时的Appkey(从JOS控制台->管理应用中获取)

redirect_uri

必须

即应用的回调地址,必须与创建应用时所填回调页面url一致

state

可选

状态参数,由开发者自定义,颁发授权后会原封不动返回

scope

可选

权限参数,API组名串。多个组名时,用""分隔,目前支持参数值:read

view

可选

移动端授权,该值固定为wap;非移动端授权,无需传值

1.2引导使用应用的用户登录到如下地址获取code


web
版,https请求url如下:
https://oauth.jd.com/oauth/authorize?response_type=union&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&state=YOUR_CUSTOM_CODE

wap
版,https请求需加参数view=wap。如下:
https://oauth.jd.com/oauth/authorize?response_type=union&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&state=YOUR_CUSTOM_CODE&view=wap

1.3用户登录并授权

1.4开发者获取授权码code

用户同意授权,页面跳转至应用的回调地址,同时返回授权码code以及state参数。
如果用户取消授权,则页面跳转至应用的回调地址,同时返回如下错误信息:error=access_denied

 

2、获取访问令牌token


用上一步获取的code码和注册应用时分配的AppSecret,通过Http Post方式换取Token(访问令牌,即Access token),JOS会以json文本的形式返回数据。


2.1获取访问令牌Access token的参数

参数名称

参数选项

描述

grant_type

必须

授权类型,此流程下,该值固定为authorization_code

code

必须

授权请求返回的授权码

redirect_uri

必须

应用的回调地址,必须与创建应用时所填回调页面url一致

client_id

必须

即创建应用时的Appkey(从JOS控制台->管理应用中获取)

client_secret

必须

即创建应用时的Appsecret(从JOS控制台->管理应用中获取)

state

可选

状态参数,由开发者自定义,颁发授权后会原封不动返回


2.2可以参考如下代码获取AccessToken


String url="https://oauth.jd.com/oauth/token?grant_type=authorization_code&client_id="+appKey
+"&client_secret="+ appSecret
+"&scope=read&redirect_uri=https://"+ url
+"&code="+ code
+"&state=1234";
uri = new URL(url);
HttpURLConnection conn =(HttpURLConnection) uri.openConnection();
conn.setRequestProperty("Accept-Charset","utf-8");
conn.setRequestMethod("POST");
int code = conn.getResponseCode();
InputStream is =conn.getInputStream();
String jsonStr =inputStream2String(is);
StringaccessToken = this.getAccessToken(jsonStr);

最后生成的http请求url如下

https://oauth.jd.com/oauth/token?grant_type=authorization_code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=GET_CODE&state=YOUR_CUSTOM_CODE&client_secret=YOUR_APP_SECRET

http返回结果中,得到AccessToken (如图):

注释:
expires_in
:失效时间(秒)
time
:授权的时间点(UNIX时间戳,单位:毫秒)

refresh_token:刷新令牌(暂无意义)
token_type
token类型(暂无意义)

注:code码只允许使用一次,如获取access_token失败,需重新授权获取code码,再换取access_token


3、获取京东用户uid

3.1接口文档

详见:https://jos.jd.com/api/detail.htm?id=1005

3.2接口开发指南

详见:https://jos.jd.com/doc/channel.htm?id=157


4、获取京东用户昵称

4.1接口文档

详见:https://jos.jd.com/api/detail.htm?id=1006

4.2接口开发指南

详见:https://jos.jd.com/doc/channel.htm?id=157