此流程要求ISV或商家(自主研发应用)有web服务器,能够保持应用本身的密钥以及状态,可以通过https直接访问京东的授权服务器。
1. 参数说明
获取授权码code的参数参数名称参数选项描述response_type必须此流程下,该值固定为code
client_id必须即创建应用时的Appkey(从JOS控制台->管理应用中获取)
redirect_uri必须即应用的回调地址,必须与创建应用时所填回调页面url一致
state可选状态参数,由ISV自定义,颁发授权后会原封不动返回
scope可选权限参数,API组名串。多个组名时,用","分隔,目前支持参数值:read
view可选移动端授权,该值固定为wap;非移动端授权,无需传值
获取访问令牌Access token的参数
参数名称参数选项描述grant_type必须授权类型,此流程下,该值固定为authorization_code
code必须授权请求返回的授权码
redirect_uri必须应用的回调地址,必须与创建应用时所填回调页面url一致
client_id必须即创建应用时的Appkey(从JOS控制台->管理应用中获取)
client_secret必须即创建应用时的Appsecret(从JOS控制台->管理应用中获取)
state可选状态参数,由ISV自定义,颁发授权后会原封不动返回
2. 基本流程
2.1 引导使用应用的用户登录到如下地址获取code
http请求url如下:
https://auth.360buy.com/oauth/authorize?response_type=code&client_id=YOUR_CLIENT_ID&
redirect_uri=YOUR_REGISTERED_REDIRECT_URI&state=YOUR_CUSTOM_CODE
wap版,http请求需加参数view=wap。如下:
https://auth.360buy.com/oauth/authorize?response_type=code&client_id=YOUR_CLIENT_ID&
redirect_uri=YOUR_REGISTERED_REDIRECT_URI&state=YOUR_CUSTOM_CODE&view=wap
2.2 用户登录授权
2.3 获取授权码code
用户同意授权,页面跳转至应用的回调地址,同时返回授权码code以及state参数。
如果用户取消授权,则页面跳转至应用的回调地址,同时返回如下错误信息:error=access_denied
2.4 获取访问令牌access_token
用上一步获取的code码和注册应用时分配的AppSecret,通过Http Post方式换取Token(访问令牌,即Access token),JOS会以json文本的形式返回数据。
ISV可以参考如下代码获取AccessToken:String url ="https://auth.360buy.com/oauth/token?grant_type=authorization_code&client_id="+appKey
+"&client_secret="+ appSecret
+"&scope=read&redirect_uri=http://"+ 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如下(code只允许使用一次,如获取token失败,请重新授权获取code,再换取access_token):
https://auth.360buy.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和Refresh_token。
注释:
uid:授权用户对应的京东ID
user_nick:授权用户对应的京东昵称
expires_in:失效时间(秒)
time:授权的时间点(UNIX时间戳,单位:毫秒)
token_type:token类型(暂无意义)