diff --git a/src/main/java/net/dreamlu/api/oauth/OauthWeixin.java b/src/main/java/net/dreamlu/api/oauth/OauthWeixin.java new file mode 100644 index 0000000000000000000000000000000000000000..d05d8f7bba47ff06db100bd1d6dff86c0d8489f6 --- /dev/null +++ b/src/main/java/net/dreamlu/api/oauth/OauthWeixin.java @@ -0,0 +1,82 @@ +package net.dreamlu.api.oauth; + +import java.util.HashMap; +import java.util.Map; + +import com.jfinal.kit.StrKit; + +import net.dreamlu.api.util.HttpKitExt; +import net.dreamlu.api.util.TokenUtil; +/** + * OauthWeixin + * @author Javen + * email: javen205@126.com + * site: http://www.jianshu.com/u/9be31238fda1 + */ +public class OauthWeixin extends Oauth{ + private static final String AUTH_URL = "https://open.weixin.qq.com/connect/qrconnect"; + private static final String TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token"; + private static final String USER_INFO_URL = "https://api.weixin.qq.com/sns/userinfo"; + + + private static OauthWeixin oauthWeixin = new OauthWeixin(); + + private OauthWeixin() {} + /** + * 用于链式操作 + * @return OauthWeixin + */ + public static OauthWeixin me() { + return oauthWeixin; + } + + /** + * 获取授权url + * @return String url + */ + public String getAuthorizeUrl(String state) { + Map params = new HashMap(); + params.put("appid", getClientId()); + params.put("response_type", "code"); + params.put("redirect_uri", getRedirectUri()); + params.put("scope", "snsapi_login"); + if (StrKit.isBlank(state)) { + params.put("state", "wx#wechat_redirect"); + } else { + params.put("state", state.concat("#wechat_redirect")); + } + return HttpKitExt.initParams(AUTH_URL, params); + } + + /** + * 获取token 返回的是JSON 解析获取到Token以及OpenId + * @param code 使用code换取token + * @return String 返回类型 + */ + public String getTokenByCode(String code) { + Map params = new HashMap(); + params.put("code", code); + params.put("appid", getClientId()); + params.put("secret", getClientSecret()); + params.put("grant_type", "authorization_code"); + return super.doPost(TOKEN_URL, params); + } + + /** + * 获取UserInfo + * @param accessToken AccessToken + * @return String 返回类型 + */ + public String getUserInfo(String accessToken,String openId) { + Map params = new HashMap(); + params.put("access_token", accessToken); + params.put("openid", openId); + return super.doPost(USER_INFO_URL, params); + } + + @Override + public Oauth getSelf() { + return this; + } + +} diff --git a/src/main/resources/oauth.properties b/src/main/resources/oauth.properties index fc4540c9629050583677340003e8426e60eb8d39..8cecbccc9e9877c3a286becece301474903e2cd2 100644 --- a/src/main/resources/oauth.properties +++ b/src/main/resources/oauth.properties @@ -1,14 +1,19 @@ # @author L.cm # email: 596392912@qq.com # site: http://www.dreamlu.net -# QQ,sina,renren,baidu½ -# jarJFinalfastjson.jar +# QQ,sina,renren,baidu\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u00bd\ufffd\ufffd +# jar\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdJFinal\ufffd\ufffdfastjson.jar ## qq openid oauthQQ.openid = 100413274 oauthQQ.openkey = 0738a22b862ead14bb7976272b0a1eec oauthQQ.redirect = http://www.dreamlu.net/api/qq/callback +## weixin openid http://www.jianshu.com/p/3733777a2020 +oauthWeixin.openid = xxxxxx +oauthWeixin.openkey = xxxxxx +oauthWeixin.redirect = xxxxxx + ## sina openid oauthSina.openid = 4193705357 oauthSina.openkey = bc7bbdfe92be06b42b38206f8bca3645 diff --git a/src/test/java/net/dreamlu/Test.java b/src/test/java/net/dreamlu/Test.java index 40c100df454b08b9814218c57eefdece46352562..a7c1c7f98d6f92eea966d6bf4148f17670b220fd 100644 --- a/src/test/java/net/dreamlu/Test.java +++ b/src/test/java/net/dreamlu/Test.java @@ -68,5 +68,11 @@ public class Test { System.out.println(db.getAuthorizeUrl(TokenUtil.randomState())); // System.out.println(db.getUserInfoByCode("4ad0733f8c8601d9")); // --------------------------------- // + + OauthWeixin ow=OauthWeixin.me(); + System.out.println(ow.getAuthorizeUrl(TokenUtil.randomState())); + +// System.out.println(ow.getTokenByCode("031iCNu42S3E9L0U2Et42uzRu42iCNuU")); +// System.out.println(ow.getUserInfo("uP7fTztUqSGYfvlmZ-wloyMWdUDKAWSd395L-1hCenFxmWbjxhbGKgnsoD9C4F1XPMWOeqdYur-jGAQmE7dkjb2Q2sTxNfFHPlc3-RCQCJQ", "oI_5Bv-nD-R4HpMLPlq_khNSUZVM")); } }