抓住一只bug:企业号第三方应用创建企业号access_token时没有传入其应用的token.
This commit is contained in:
parent
e953a748e0
commit
8a30e4c72e
@ -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()),
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package com.foxinmy.weixin4j.qy.suite;
|
||||
package com.foxinmy.weixin4j.qy.suite;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||
|
||||
@ -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"));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user