From 402d87c9785ec5cec0ab059e257b2dbaecf99d0c Mon Sep 17 00:00:00 2001 From: jinyu Date: Tue, 30 Jun 2015 19:21:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=81=E7=BB=AD=E4=BC=98=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/foxinmy/weixin4j/mp/api/OauthApi.java | 30 ++++++++++++++++--- .../foxinmy/weixin4j/mp/api/weixin.properties | 2 +- .../com/foxinmy/weixin4j/qy/WeixinProxy.java | 2 +- .../com/foxinmy/weixin4j/qy/api/PartyApi.java | 5 +++- .../com/foxinmy/weixin4j/qy/api/SuiteApi.java | 7 +++-- .../foxinmy/weixin4j/qy/test/PartyTest.java | 2 +- 6 files changed, 37 insertions(+), 11 deletions(-) diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/OauthApi.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/OauthApi.java index 4846cd06..052bba93 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/OauthApi.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/OauthApi.java @@ -9,6 +9,7 @@ import com.foxinmy.weixin4j.http.weixin.WeixinResponse; import com.foxinmy.weixin4j.model.Consts; import com.foxinmy.weixin4j.mp.model.OauthToken; import com.foxinmy.weixin4j.mp.model.User; +import com.foxinmy.weixin4j.mp.type.Lang; import com.foxinmy.weixin4j.util.ConfigUtil; import com.foxinmy.weixin4j.util.StringUtil; @@ -146,19 +147,40 @@ public class OauthApi extends MpApi { * oauth获取用户信息(需scope为 snsapi_userinfo) * * @param token - * 授权票据 + * 授权信息(token&openid) * @return 用户对象 * @throws WeixinException * @see 拉取用户信息 + * href="http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html">授权获取用户信息 * @see com.foxinmy.weixin4j.mp.model.User * @see com.foxinmy.weixin4j.mp.model.OauthToken - * @see {@link com.foxinmy.weixin4j.mp.api.UserApi#getOauthToken(String)} + * @see {@link com.foxinmy.weixin4j.mp.api.OauthApi#getOauthToken(String)} + * @see {@link com.foxinmy.weixin4j.mp.api.OauthApi#getUser(String,Sring,Lang)} */ public User getUser(OauthToken token) throws WeixinException { + return getUser(token.getAccessToken(), token.getOpenid(), Lang.zh_CN); + } + + /** + * oauth获取用户信息(需scope为 snsapi_userinfo) + * + * @param oauthToken + * 授权票据 + * @param openid + * 用户openid + * @param lang + * 使用语言 + * @return 用户对象 + * @throws WeixinException + * @see 授权获取用户信息 + * @see com.foxinmy.weixin4j.mp.model.User + */ + public User getUser(String oauthToken, String openid, Lang lang) + throws WeixinException { String user_info_uri = getRequestUri("sns_user_info_uri"); WeixinResponse response = weixinClient.get(String.format(user_info_uri, - token.getAccessToken(), token.getOpenid())); + oauthToken, openid, lang.name())); return response.getAsObject(new TypeReference() { }); diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/weixin.properties b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/weixin.properties index afef726a..e07d455c 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/weixin.properties +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/weixin.properties @@ -20,7 +20,7 @@ sns_user_auth_uri=https://open.weixin.qq.com/connect/qrconnect?appid=%s&redirect sns_user_token_uri=https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code sns_token_refresh_uri=https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=%s&grant_type=refresh_token&refresh_token=%s sns_auth_token_uri=https://api.weixin.qq.com/sns/auth?access_token=%s&openid=%s -sns_user_info_uri=https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s&lang=zh_CN +sns_user_info_uri=https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s&lang=%s # \u76f4\u63a5\u83b7\u53d6\u7528\u6237\u4fe1\u606f api_user_info_uri={api_cgi_url}/user/info?access_token=%s&openid=%s&lang=%s diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java index 32dcede9..c9fb6bb1 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java @@ -311,7 +311,7 @@ public class WeixinProxy { * 查询部门列表(以部门的order字段从小到大排列) * * @param partyId - * 部门ID。获取指定部门ID下的子部门 + * 部门ID。获取指定部门ID下的子部门 传入0表示获取全部子部门 * @see com.foxinmy.weixin4j.qy.model.Party * @see 获取部门列表 diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/PartyApi.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/PartyApi.java index 62e89d91..57a6783a 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/PartyApi.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/PartyApi.java @@ -87,7 +87,7 @@ public class PartyApi extends QyApi { * 查询部门列表(以部门的order字段从小到大排列) * * @param partId - * 部门ID。获取指定部门ID下的子部门 + * 部门ID。获取指定部门ID下的子部门 传入0表示获取全部子部门 * @see com.foxinmy.weixin4j.qy.model.Party * @see 获取部门列表 @@ -96,6 +96,9 @@ public class PartyApi extends QyApi { */ public List listParty(int partId) throws WeixinException { String department_list_uri = getRequestUri("department_list_uri"); + if (partId > 0) { + department_list_uri += String.format("&id=%d", partId); + } Token token = tokenHolder.getToken(); WeixinResponse response = weixinClient.post(String.format( department_list_uri, token.getAccessToken())); diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/SuiteApi.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/SuiteApi.java index 89bb630a..0775e71a 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/SuiteApi.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/SuiteApi.java @@ -2,7 +2,6 @@ package com.foxinmy.weixin4j.qy.api; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.TypeReference; import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.http.weixin.JsonResult; import com.foxinmy.weixin4j.http.weixin.WeixinResponse; @@ -198,8 +197,10 @@ public class SuiteApi extends QyApi { WeixinResponse response = weixinClient.post( String.format(suite_get_authinfo_uri, suiteTokenHolder.getAccessToken()), obj.toJSONString()); - return response.getAsObject(new TypeReference() { - }); + obj = response.getAsJson(); + obj.put("corp_info", obj.remove("auth_corp_info")); + obj.put("user_info", obj.remove("auth_user_info")); + return JSON.toJavaObject(obj, OUserInfo.class); } /** diff --git a/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/PartyTest.java b/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/PartyTest.java index fdce2c95..ce911b9c 100644 --- a/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/PartyTest.java +++ b/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/PartyTest.java @@ -44,7 +44,7 @@ public class PartyTest extends TokenTest { @Test public void list() throws WeixinException { - List list = partyApi.listParty(1); + List list = partyApi.listParty(0); Assert.assertFalse(list.isEmpty()); System.out.println(list); }