You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
4.5 KiB
118 lines
4.5 KiB
package com.ynxbd.wx.wxfactory.base.auth;
|
|
|
|
import com.ynxbd.common.helper.common.JsonHelper;
|
|
import com.ynxbd.common.helper.http.OkHttpHelper;
|
|
import com.ynxbd.wx.wxfactory.base.auth.models.RespAccessToken;
|
|
import com.ynxbd.wx.wxfactory.bean.SnsOath2AccessToken;
|
|
import com.ynxbd.wx.wxfactory.bean.SnsUserInfo;
|
|
import lombok.NoArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import weixin.popular.util.EmojiUtil;
|
|
|
|
@Slf4j
|
|
@NoArgsConstructor
|
|
public class Client {
|
|
|
|
/**
|
|
* 获取微信token
|
|
*
|
|
* @param appId appId
|
|
* @param appSecret appSecret
|
|
* @return accessToken
|
|
*/
|
|
public synchronized RespAccessToken getAccessToken(String appId, String appSecret) {
|
|
String respJson = OkHttpHelper.get("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential", params -> {
|
|
params.put("appid", appId);
|
|
params.put("secret", appSecret);
|
|
});
|
|
if (respJson == null) {
|
|
return new RespAccessToken();
|
|
}
|
|
RespAccessToken response = JsonHelper.parseObject(respJson, RespAccessToken.class);
|
|
if (response == null) {
|
|
log.error("[access_token]请求失败 resp={}", respJson);
|
|
return new RespAccessToken();
|
|
}
|
|
return response;
|
|
}
|
|
|
|
|
|
/**
|
|
* 获取微信token
|
|
*
|
|
* @param appId appId
|
|
* @param appSecret appSecret
|
|
* @return accessToken
|
|
*/
|
|
public SnsOath2AccessToken oauth2AccessToken(String appId, String appSecret, String code) {
|
|
String respJson = OkHttpHelper.get("https://api.weixin.qq.com/sns/oauth2/access_token", params -> {
|
|
params.put("appid", appId);
|
|
params.put("secret", appSecret);
|
|
params.put("code", code);
|
|
params.put("grant_type", "authorization_code");
|
|
});
|
|
if (respJson == null) {
|
|
log.error("[oath2]请求失败");
|
|
return null;
|
|
}
|
|
SnsOath2AccessToken response = JsonHelper.parseObject(respJson, SnsOath2AccessToken.class);
|
|
if (response == null) {
|
|
log.error("[oath2]请求失败 resp={}", respJson);
|
|
return null;
|
|
}
|
|
if (!response.isSuccess()) {
|
|
log.error("[oath2]请求失败 errCode={}, errMsg={}", response.getErrCode(), response.getErrMsg());
|
|
return null;
|
|
}
|
|
return response;
|
|
}
|
|
|
|
public SnsUserInfo snsUserInfo(String accessToken, String openid, String lang, Integer emoji) {
|
|
String respJson = OkHttpHelper.get("https://api.weixin.qq.com/sns/userinfo", params -> {
|
|
params.put("access_token", accessToken);
|
|
params.put("openid", openid);
|
|
params.put("lang", lang);
|
|
});
|
|
if (respJson == null) {
|
|
log.error("[sns-user_info]请求失败");
|
|
return null;
|
|
}
|
|
SnsUserInfo response = JsonHelper.parseObject(respJson, SnsUserInfo.class);
|
|
if (response == null) {
|
|
log.error("[sns-user_info]请求失败 respJson={}", respJson);
|
|
return null;
|
|
}
|
|
|
|
if (!response.isSuccess()) {
|
|
log.error("[sns-user_info]请求失败 errCode={}, errMsg={}", response.getErrCode(), response.getErrMsg());
|
|
}
|
|
|
|
if (emoji != 0 && response.getNickname() != null) {
|
|
response.setNickname_emoji(EmojiUtil.parse(response.getNickname(), emoji));
|
|
}
|
|
return response;
|
|
}
|
|
|
|
|
|
// public static String getSnsToken() {
|
|
// if (ACCESS_TOKEN_CACHE == null) {
|
|
// createAccessTokenCache();
|
|
// }
|
|
// String accessToken = ACCESS_TOKEN_CACHE.get("access_token");
|
|
// if (ObjectUtils.isEmpty(accessToken)) {
|
|
// Map<String, Object> map = HttpClientHelper.createParamsMap();
|
|
// map.put("appid", WeChatConfig.getAppId());
|
|
// map.put("secret", WeChatConfig.getAppSecret());
|
|
// JSONObject jsonObject = HttpClientHelper.getJson("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential", map, null);
|
|
// if (jsonObject == null) {
|
|
// log.error("[微信]获取accessToken失败{}", JSONObject.toJSONString(jsonObject));
|
|
// return null;
|
|
// }
|
|
// accessToken = jsonObject.getString("access_token");
|
|
// if (accessToken != null) {
|
|
// ACCESS_TOKEN_CACHE.put("access_token", accessToken);
|
|
// }
|
|
// }
|
|
// return accessToken;
|
|
// }
|
|
}
|
|
|