com.foxinmy.weixin4j.mp.api.OauthApi Maven / Gradle / Ivy
package com.foxinmy.weixin4j.mp.api;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import com.alibaba.fastjson.TypeReference;
import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.Response;
import com.foxinmy.weixin4j.model.Consts;
import com.foxinmy.weixin4j.model.WeixinMpAccount;
import com.foxinmy.weixin4j.mp.model.OauthToken;
import com.foxinmy.weixin4j.mp.model.User;
import com.foxinmy.weixin4j.util.ConfigUtil;
/**
* oauth授权
*
* @className OauthApi
* @author jy
* @date 2015年3月6日
* @since JDK 1.7
* @see 微信登陆
*/
public class OauthApi extends MpApi {
/**
* @see {@link com.foxinmy.weixin4j.mp.api.OauthApi#getAuthorizeURL(String, String,String)}
*
* @return
*/
public String getAuthorizeURL() {
return getAuthorizeURL("state");
}
/**
* @see {@link com.foxinmy.weixin4j.mp.api.OauthApi#getAuthorizeURL(String, String,String)}
*
* @return
*/
public String getAuthorizeURL(String state) {
String appId = ConfigUtil.getWeixinMpAccount().getId();
String redirectUri = ConfigUtil.getValue("redirect_uri");
return getAuthorizeURL(appId, redirectUri, state);
}
/**
* 请求CODE
*
* @param appId
* 应用ID
* @param redirectUri
* 重定向地址
* @param state
* 用于保持请求和回调的状态,授权请求后原样带回给第三方
* @return 请求的URL
*/
public String getAuthorizeURL(String appId, String redirectUri, String state) {
String sns_user_auth_uri = getRequestUri("sns_user_auth_uri");
try {
return String.format(sns_user_auth_uri, appId,
URLEncoder.encode(redirectUri, Consts.UTF_8.name()),
"snsapi_login", state);
} catch (UnsupportedEncodingException e) {
;
}
return "";
}
/**
* @see {@link com.foxinmy.weixin4j.mp.api.OauthApi#getOauthToken(String, String,String)}
*
* @return
*/
public OauthToken getOauthToken(String code) throws WeixinException {
WeixinMpAccount account = ConfigUtil.getWeixinMpAccount();
return getOauthToken(code, account.getId(), account.getSecret());
}
/**
* oauth授权code获取token
*
* @param code
* 用户授权后返回的code
* @param appid
* 应用ID
* @param appsecret
* 应用密钥
* @return token对象
* @throws WeixinException
* @see com.foxinmy.weixin4j.mp.model.OauthToken
*/
public OauthToken getOauthToken(String code, String appid, String appsecret)
throws WeixinException {
String user_token_uri = getRequestUri("sns_user_token_uri");
Response response = request.get(String.format(user_token_uri, appid,
appsecret, code));
return response.getAsObject(new TypeReference() {
});
}
/**
* @see {@link com.foxinmy.weixin4j.mp.api.OauthApi#getOauthToken(String, String,String)}
*
* @return
*/
public OauthToken refreshToken(String refreshToken) throws WeixinException {
WeixinMpAccount account = ConfigUtil.getWeixinMpAccount();
return refreshToken(account.getId(), refreshToken);
}
/**
* 刷新token
*
* @param appId
* 应用ID
* @param refreshToken
* 填写通过access_token获取到的refresh_token参数
* @return token对象
* @throws WeixinException
*/
public OauthToken refreshToken(String appId, String refreshToken)
throws WeixinException {
String sns_token_refresh_uri = getRequestUri("sns_token_refresh_uri");
Response response = request.get(String.format(sns_token_refresh_uri,
appId, refreshToken));
return response.getAsObject(new TypeReference() {
});
}
/**
* 验证access_token是否正确
*
* @param accessToken
* 接口调用凭证
* @param openId
* 用户标识
* @return 验证结果
*/
public boolean authAccessToken(String accessToken, String openId) {
String sns_auth_token_uri = getRequestUri("sns_auth_token_uri");
try {
request.get(String.format(sns_auth_token_uri, accessToken, openId));
return true;
} catch (WeixinException e) {
;
}
return false;
}
/**
* oauth获取用户信息
*
* @param token
* 授权票据
* @return 用户对象
* @throws WeixinException
* @see 拉取用户信息
* @see com.foxinmy.weixin4j.mp.model.User
* @see com.foxinmy.weixin4j.mp.model.OauthToken
* @see {@link com.foxinmy.weixin4j.mp.api.UserApi#getOauthToken(String)}
*/
public User getUser(OauthToken token) throws WeixinException {
String user_info_uri = getRequestUri("sns_user_info_uri");
Response response = request.get(String.format(user_info_uri,
token.getAccessToken(), token.getOpenid()));
return response.getAsObject(new TypeReference() {
});
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy