如果您的应用已和京东JOS对接,需要获取一些与用户紧密相关的信息(如订单、商品、促销等),为保证数据的安全性和隐私性,需要取得用户的同意,引导用户授权。JOS采用国际通用的OAuth2.0标准协议,支持网站、桌面客户端、ERP系统。如果要了解更多关于OAuth2.0的技术说明,请参考官方网站 http://oauth.net/2/ 。目前,JOS的OAuth2.0支持以下方式获取Access Token。
官方说明文档:http://jos.jd.com/doc/channel.htm?id=152
1.访问 https://auth.360buy.com/oauth/authorize?response_type=code&client_id=京东APPID&redirect_uri=后台设置的回调地址
2.根据授权后回调用code换取access_token
使用第三方fastJson.jar,京东JAVA开放sdk.jar
public static void main(String[] args) {
// 获取access_token
new AccessTokenUtils().get_access_token("gmgUSe");
}
/**
* 1.获取京东授权登陆后的值
* @param access_code 授权登陆后的code
*/
public void get_access_token(String access_code) {
StringBuffer sb = new StringBuffer();
sb.append("http://auth.360buy.com/oauth/token?");
sb.append("grant_type=authorization_code");
sb.append("&client_id=" + APIIConst.APP_KEY);
sb.append("&client_secret=" + APIIConst.APP_SECRET);
sb.append("&scope=read");
sb.append("&redirect_uri=" + APIIConst.REQ_BACK_URL);
sb.append("&code=" + access_code);
// sb.append("&state=1234");
String json_text = HttpRequestTools.sendGetReq(sb.toString(), "GET", 102400, "GBK");
//System.out.println(json_text);
JSONObject obj = (JSONObject) JSON.parse(json_text);
// code
String code = obj.getString("code");
if("0".equals(code)) {
// 授权码
String access_token = obj.getString("access_token");
// 失效时间(秒)
String expires_in = obj.getString("expires_in");
String refresh_token = obj.getString("refresh_token");
String scope = obj.getString("scope");
// 授权的时间点(UNIX时间戳,单位:毫秒)
String time = obj.getString("time");
// token类型(暂无意义)
String token_type = obj.getString("token_type");
// 授权用户对应的京东ID
String uid = obj.getString("uid");
// 授权用户对应的京东昵称
String user_nick = obj.getString("user_nick");
logger.info(obj.getString("user_nick") + "授权成功.");
} else {
// 授权错误
logger.info("京东授权错误:" + json_text);
}
}
http://www.xiaojianjian.net/archives/257