抓住一只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
*/
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");
JSONObject obj = (JSONObject) JSON.toJSON(party);
if (party.getParentid() < 1) {
obj.remove("parentid");
}
if (party.getOrder() < 0) {
obj.remove("order");
}
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(
String.format(department_update_uri, token.getAccessToken()),

View File

@ -113,7 +113,8 @@ public class SuiteApi extends QyApi {
*/
public TokenHolder createTokenHolder(String 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);
// 缓存微信企业号access_token
TokenCreator tokenCreator = new WeixinTokenSuiteCreator(null,
suitePerCodeHolder);
suitePerCodeHolder, suiteTokenHolder);
Token token = new Token(obj.getString("access_token"));
token.setExpiresIn(obj.getIntValue("expires_in"));
token.setTime(System.currentTimeMillis());

View File

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