一、授权登陆介绍
如果您的应用和京东的授权登陆对接后,需要获取一些用户相关的信息,为保证数据的安全性和隐私性,需要取得用户的同意,引导用户授权。授权登陆采用国际通用的OAuth2.0标准协议,目前仅支持网站系统。如果要了解更多关于OAuth2.0的技术说明,请参考官方网站 https://oauth.net/2/ 目前,授权登陆的OAuth2.0支持以下方式获取AccessToken。
如果您的应用和京东的授权登陆对接后,需要获取一些用户相关的信息,为保证数据的安全性和隐私性,需要取得用户的同意,引导用户授权。授权登陆采用国际通用的OAuth2.0标准协议,目前仅支持网站系统。如果要了解更多关于OAuth2.0的技术说明,请参考官方网站 https://oauth.net/2/ 目前,授权登陆的OAuth2.0支持以下方式获取AccessToken。
1. 注册开发者
注册京东账号,并登陆isv.jd.com,点击jos开发者登录。
2. 创建应用
进入开发者后台后,点击应用中心。根据需要对接的业务,按照相关流程创建应用。
授权登陆对接权限数申请表 | |
业务描述 |
|
业务流程简图 |
|
应用/网站名称 |
|
网站地址 |
|
用户量级 |
|
京东用户名 |
|
公司名称 |
|
联系人 |
|
联系电话 |
|
联系邮箱 |
|
Appkey |
|
1. 使用京东提供的标准“京东登录”按钮图标说明
我们为您提供了下面几种标准的“京东登录”图标,供开发者下载使用。
注意:
1). 我们不提供包含所有规格标识的图片包下载,请开发者根据需要选择合适的标识下载。
2). 以下各种规格的图标版权都归京东所有,请勿更改,否则京东有权单方面中止开放登录服务。
2、京东按钮图标示例
3、京东按钮下载
230*48京东登录按钮
170*32京东登录按钮
120*24京东登录按钮
105*16京东登录按钮
63*24京东登录按钮
50*16京东登录按钮
16*16京东登录按钮
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
用上一步获取的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.1接口文档
详见:https://jos.jd.com/api/detail.htm?id=1005
3.2接口开发指南
详见:https://jos.jd.com/doc/channel.htm?id=157
4.1接口文档
详见:https://jos.jd.com/api/detail.htm?id=1006
4.2接口开发指南
详见:https://jos.jd.com/doc/channel.htm?id=157