抓住一只bug:企业号第三方应用创建企业号access_token时没有传入其应用的token.

This commit is contained in:
jinyu 2015-06-30 08:45:53 +08:00
parent e953a748e0
commit 8a30e4c72e
4 changed files with 22 additions and 6 deletions

View File

@ -65,8 +65,17 @@ public class PartyApi extends QyApi {
* @throws WeixinException * @throws WeixinException
*/ */
public JsonResult updateParty(Party party) throws WeixinException { public JsonResult updateParty(Party party) throws WeixinException {
if (party.getId() < 1) {
throw new WeixinException("department id must gt 1");
}
String department_update_uri = getRequestUri("department_update_uri"); String department_update_uri = getRequestUri("department_update_uri");
JSONObject obj = (JSONObject) JSON.toJSON(party); JSONObject obj = (JSONObject) JSON.toJSON(party);
if (party.getParentid() < 1) {
obj.remove("parentid");
}
if (party.getOrder() < 0) {
obj.remove("order");
}
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post( WeixinResponse response = weixinClient.post(
String.format(department_update_uri, token.getAccessToken()), String.format(department_update_uri, token.getAccessToken()),

View File

@ -113,7 +113,8 @@ public class SuiteApi extends QyApi {
*/ */
public TokenHolder createTokenHolder(String authCorpid) { public TokenHolder createTokenHolder(String authCorpid) {
return new TokenHolder(new WeixinTokenSuiteCreator(authCorpid, return new TokenHolder(new WeixinTokenSuiteCreator(authCorpid,
suitePerCodeHolder), suiteTicketHolder.getTokenStorager()); suitePerCodeHolder, suiteTokenHolder),
suiteTicketHolder.getTokenStorager());
} }
/** /**
@ -165,7 +166,7 @@ public class SuiteApi extends QyApi {
OUserInfo oInfo = JSON.toJavaObject(obj, OUserInfo.class); OUserInfo oInfo = JSON.toJavaObject(obj, OUserInfo.class);
// 缓存微信企业号access_token // 缓存微信企业号access_token
TokenCreator tokenCreator = new WeixinTokenSuiteCreator(null, TokenCreator tokenCreator = new WeixinTokenSuiteCreator(null,
suitePerCodeHolder); suitePerCodeHolder, suiteTokenHolder);
Token token = new Token(obj.getString("access_token")); Token token = new Token(obj.getString("access_token"));
token.setExpiresIn(obj.getIntValue("expires_in")); token.setExpiresIn(obj.getIntValue("expires_in"));
token.setTime(System.currentTimeMillis()); token.setTime(System.currentTimeMillis());

View File

@ -1,4 +1,4 @@
package com.foxinmy.weixin4j.qy.suite; package com.foxinmy.weixin4j.qy.suite;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.exception.WeixinException;

View File

@ -7,6 +7,7 @@ import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
import com.foxinmy.weixin4j.model.Token; import com.foxinmy.weixin4j.model.Token;
import com.foxinmy.weixin4j.qy.type.URLConsts; import com.foxinmy.weixin4j.qy.type.URLConsts;
import com.foxinmy.weixin4j.token.TokenCreator; import com.foxinmy.weixin4j.token.TokenCreator;
import com.foxinmy.weixin4j.token.TokenHolder;
/** /**
* 微信企业号token创建(永久授权码) * 微信企业号token创建(永久授权码)
@ -24,6 +25,7 @@ public class WeixinTokenSuiteCreator implements TokenCreator {
private final WeixinHttpClient httpClient; private final WeixinHttpClient httpClient;
private final String authCorpid; private final String authCorpid;
private final SuitePerCodeHolder perCodeHolder; private final SuitePerCodeHolder perCodeHolder;
private final TokenHolder suiteTokenHolder;
/** /**
* *
@ -31,11 +33,14 @@ public class WeixinTokenSuiteCreator implements TokenCreator {
* 授权方corpid * 授权方corpid
* @param perCodeHolder * @param perCodeHolder
* 永久授权码 * 永久授权码
* @param suiteTokenHolder
* 套件token
*/ */
public WeixinTokenSuiteCreator(String authCorpid, public WeixinTokenSuiteCreator(String authCorpid,
SuitePerCodeHolder perCodeHolder) { SuitePerCodeHolder perCodeHolder, TokenHolder suiteTokenHolder) {
this.authCorpid = authCorpid; this.authCorpid = authCorpid;
this.perCodeHolder = perCodeHolder; this.perCodeHolder = perCodeHolder;
this.suiteTokenHolder = suiteTokenHolder;
this.httpClient = new WeixinHttpClient(); this.httpClient = new WeixinHttpClient();
} }
@ -50,8 +55,9 @@ public class WeixinTokenSuiteCreator implements TokenCreator {
obj.put("suite_id", perCodeHolder.getSuiteId()); obj.put("suite_id", perCodeHolder.getSuiteId());
obj.put("auth_corpid", authCorpid); obj.put("auth_corpid", authCorpid);
obj.put("permanent_code", perCodeHolder.getPermanentCode()); obj.put("permanent_code", perCodeHolder.getPermanentCode());
WeixinResponse response = httpClient.post(URLConsts.TOKEN_SUITE_URL, WeixinResponse response = httpClient.post(
obj.toJSONString()); String.format(URLConsts.TOKEN_SUITE_URL,
suiteTokenHolder.getAccessToken()), obj.toJSONString());
obj = response.getAsJson(); obj = response.getAsJson();
Token token = new Token(obj.getString("access_token")); Token token = new Token(obj.getString("access_token"));
token.setExpiresIn(obj.getIntValue("expires_in")); token.setExpiresIn(obj.getIntValue("expires_in"));