package edu.fudan.eservice.common.utils; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.mongodb.util.JSON; public class OAuth2Helper { private static Log log=LogFactory.getLog(OAuth2Helper.class); /** * 获取access_token * * @param code * @param isrefresh * 是否通过refresh_token获取 * @return */ @SuppressWarnings("unchecked") public static Map<String, Object> getToken(String code, boolean isrefresh) { Config conf = Config.getInstance(); try { String urlstr = conf.get("tac.tokenurl")+"?client_id=" + conf.get("tac.clientid") + "&client_secret=" + URLEncoder.encode(conf.get("tac.secret"), "utf-8"); if (isrefresh) { urlstr += "&grant_type=refresh_token&refresh_token=" + code; } else { urlstr += "&grant_type=authorization_code&code=" + code + "&redirect_uri=" + URLEncoder.encode(conf.get("tac.redirecturi"), "utf-8"); } String ret; ret = CommonUtil.getWebContent(urlstr).toString(); Map<String, Object> retobj = (Map<String, Object>) JSON.parse(ret); // if(!CommonUtil.isEmpty(retobj.get("access_token"))) return retobj; } catch (Exception e) { log.error(e); } return new HashMap<String, Object>(); } /** * 废除access_token,即解绑 * * @param access_token * @return */ @SuppressWarnings("unchecked") public static Map<String, Object> revokeToken(String access_token) { Config conf = Config.getInstance(); try { String urlstr = conf.get("tac.tokenurl")+"?client_id=" + conf.get("tac.clientid") + "&client_secret=" + URLEncoder.encode(conf.get("tac.secret"), "utf-8"); urlstr += "&grant_type=revoke_token&access_token=" + access_token; String ret; ret = CommonUtil.getWebContent(urlstr).toString(); Map<String, Object> retobj = (Map<String, Object>) JSON.parse(ret); return retobj; } catch (Exception e) { log.error(e); } return new HashMap<String, Object>(); } }