标签:过期 pen http doc result ram persist inf art
流程如下:
/**
* 获取access token 有效期2 个小时,有效期获取,值不变,时间延长
* @return
*/
public static DdResult getAccessToken(String appid, String secret){
String requestUrl = "https://oapi.dingtalk.com/sns/gettoken?appid=APPID&appsecret=APPSECRET";
requestUrl = requestUrl.replace("APPID", appid).replace("APPSECRET", secret);
String accessTokenResult = HttpClientUtil.doGet(requestUrl);
log.info("------->> >> -------->> request ding ding access token result:{}", accessTokenResult);
if (StringUtils.isNotBlank(accessTokenResult)) {
return JSON.parseObject(accessTokenResult, new TypeReference<DdResult>(){});
}
return new DdResult();
}
/**
* 根据code与accessToken获取用户的持久授权码
* @param code 临时码,只能使用一次
* @param accessToken 有效期,2个小时
* @return
*/
public static DdResult getPersistentCode(String code, String accessToken){
String requestUrl = "https://oapi.dingtalk.com/sns/get_persistent_code?access_token=" + accessToken;
HashMap<String, String> params = Maps.newHashMap();
params.put("tmp_auth_code", code);
String accessTokenResult = HttpClientUtil.doPostJson(requestUrl, JSON.toJSONString(params));
log.info("------->> >> -------->> ding ding persistent token result: {}", accessTokenResult);
return JSON.parseObject(accessTokenResult, DdResult.class);
}
/**
* 获取sns token
* @param accessToken
* @param openId
* @param persistentCode
* @return
*/
public static DdResult getSnsToken(String accessToken, String openId, String persistentCode) {
HashMap<String, String> params = Maps.newHashMap();
params.put("openid", openId);
params.put("persistent_code", persistentCode);
String snsTokenRequestUrl = "https://oapi.dingtalk.com/sns/get_sns_token?access_token=" + accessToken;
String result = HttpClientUtil.doPostJson(snsTokenRequestUrl, JSON.toJSONString(params));
log.info("------->> >> -------->> request ding ding sns token result:{}", result);
return JSON.parseObject(result, new TypeReference<DdResult>(){});
}
public static DdResult getUserInfo(String snsToken) {
String userInfoRequestUrl = "https://oapi.dingtalk.com/sns/getuserinfo?sns_token=" + snsToken;
String result = HttpClientUtil.doGet(userInfoRequestUrl);
log.info("------->> >> -------->> >> request ding ding sns token result:{}", result);
if (StringUtils.isBlank(result)) {
return null;
}
return JSON.parseObject(result, new TypeReference<DdResult>() {});
}
?拿到用户的信息就可以去做登录操作了。
标签:过期 pen http doc result ram persist inf art
原文地址:https://www.cnblogs.com/chaos-x/p/9415665.html