WEB接入第三方微信授权登录
/**
* getWeChatUserInfo:(获取网页授权凭证). <br/>
*
* @author HuangTianLaing
* @param appId 公众账号的唯一标识
* @param appSecret 公众账号的密钥
* @param code
* @return WeixinAouth2Token
*/
public WeChatOauth2Token getOauth2AccessToken(String appId, String appSecret, String code) {
WeChatOauth2Token wat = null;
// 拼接请求地址
/* String requestUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
requestUrl = requestUrl.replace("APPID", appId);
requestUrl = requestUrl.replace("SECRET", appSecret);
requestUrl = requestUrl.replace("CODE", code);*/
// 获取网页授权凭证
String json= HttpKit.get(redirectUri(getAccess_tokenByCode, new Object[] { appId, appSecret, code }));
JSONObject jsonObject = JSONObject.fromObject(json);
if (null != jsonObject) {
try {
wat = new WeChatOauth2Token();
wat.setAccessToken(jsonObject.getString("access_token"));
wat.setExpiresIn(jsonObject.getInt("expires_in"));
wat.setRefreshToken(jsonObject.getString("refresh_token"));
wat.setOpenId(jsonObject.getString("openid"));
wat.setScope(jsonObject.getString("scope"));
} catch (Exception e) {
wat = null;
int errorCode = jsonObject.getInt("errcode");
String errorMsg = jsonObject.getString("errmsg");
LogKit.info("第三方:【微信】获取网页授权凭证失败 :errcode:{"+errorCode+"} errmsg:{"+errorMsg+"}");
}
}
return wat;
}
/**
* getWeChatUserInfo:(通过网页授权获取用户信息). <br/>
*
* @author HuangTianLaing
* @param accessToken 网页授权接口调用凭证
* @param openId 用户标识
* @return WeChatUserInfo
* @since JDK 1.6
*/
@SuppressWarnings( { "deprecation", "unchecked" })
public ThirdUserInfo getWeChatUserInfo(String accessToken, String openId) {
ThirdUserInfo userInfo = null;
// 拼接请求地址
/* String requestUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID";
requestUrl = requestUrl.replace("ACCESS_TOKEN", accessToken).replace("OPENID", openId);*/
// 通过网页授权获取用户信息
String json = HttpKit.get(redirectUri(getUserInfoByOpenId,new Object[] { accessToken, openId}));
JSONObject jsonObject=JSONObject.fromObject(json);
if (null != jsonObject) {
try {
userInfo = new ThirdUserInfo();
// 用户的标识
userInfo.setOpenId(jsonObject.getString("openid"));
// 昵称
userInfo.setNickname(jsonObject.getString("nickname"));
// 性别(1是男性,2是女性,0是未知)
userInfo.setSex(jsonObject.getInt("sex"));
// 用户所在国家
userInfo.setCountry(jsonObject.getString("country"));
// 用户所在省份
userInfo.setProvince(jsonObject.getString("province"));
// 用户所在城市
userInfo.setCity(jsonObject.getString("city"));
// 用户头像
userInfo.setHeadImgUrl(jsonObject.getString("headimgurl"));
//唯一认证
userInfo.setUnionId(jsonObject.getString("unionid"));
} catch (Exception e) {
userInfo = null;
int errorCode = jsonObject.getInt("errcode");
String errorMsg = jsonObject.getString("errmsg");
LogKit.info("第三方:【微信】获取用户信息失败 errcode:{"+errorCode+"} errmsg:{"+errorMsg+"}");
}
}
return userInfo;
}
//拼接字符串
public String redirectUri(String url,Object[] obj){
return url.format(url, obj);
}
/**
* Send GET request
*/
public static String get(String url, Map<String, String> queryParas, Map<String, String> headers) {
HttpURLConnection conn = null;
try {
conn = getHttpConnection(buildUrlWithQueryString(url, queryParas), GET, headers);
conn.connect();
return readResponseString(conn);
}
catch (Exception e) {
throw new RuntimeException(e);
}
finally {
if (conn != null) {
conn.disconnect();
}
}
}
public static String get(String url, Map<String, String> queryParas) {
return get(url, queryParas, null);
}
public static String get(String url) {
return get(url, null, null);
}