问题描述
- 微信公众号多客服 获取多客服老是失败
-
接口放回的错 是accesstoken失效了 可是我accesstoken是先获取存到数据库 然后隔7000秒重新获取 求大神帮我看看
这是获取在线客服的方法public List<String> getOnlineKefu(AccessToken token) { GET_KEFU_ONLINE = GET_KEFU_ONLINE.replace("ACCESS_TOKEN", token.getToken()); List<String> kefus = new ArrayList<String>(); try { JSONObject object = HttpRequest.HttpGet(GET_KEFU_ONLINE); logger.debug("##getOnlineKefu获取的初始json##"+object); JSONArray array = (JSONArray) object.get("kf_online_list"); if (null == array) { return null; } else { for (int i = 0; i < array.size(); i++) { Kefu kefu = JSON.parseObject( JSON.toJSONString(array.get(i)), Kefu.class); kefus.add(kefu.getKf_account()); } return kefus; } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } }
这是获取AccessToken的方法
public AccessToken getATFromWeChat(String appid, String appsecret){ String requestUrl = access_token_url.replace("APPID", appid) .replace("APPSECRET", appsecret); try { JSONObject object = HttpRequest.HttpGet(requestUrl); AccessToken ACCESSTOKEN = new AccessToken(); ACCESSTOKEN.setToken(object.getString("access_token")); ACCESSTOKEN.setExpiresIn(object.getInteger("expires_in")); ACCESSTOKEN.setGettime(new Date().getTime()); return ACCESSTOKEN; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } /** * 获取accesstoken并持久化 * @param appid * @param appsecret * @return */ public AccessToken getAT(String appid, String appsecret){ AccessToken token = service.findAT(); if(null==token){ token = getATFromWeChat(appid, appsecret); service.insertAT(token); return token; } else{ long gt = token.getGettime(); long now = new Date().getTime(); if((now-gt)>7000000){ token = getATFromWeChat(appid, appsecret); service.updateAT(token); return token; }else{ return token; } } }
这是多客服转发设置部分代码
AccessToken token = chatUtil.getAT(Content.APPID, Content.APPSECRET); logger.debug("##多客服转发获取的token##"+token); logger.debug("##此时的index##"+index); List<String> kefus = new ArrayList<String>(); if(token!=null){ // 获取在线客服列表 kefus = getOnlineKefu(token); logger.debug("##在线客服列表##"+kefus); //获取当前用户基本信息 JSONObject object = getInfo(fromUserName,token); logger.debug("##用户基本信息##"+object); //保存信息到数据库 logger.debug("##查询数据库的结果##"+service.findInfoByOp(fromUserName)); if(null==service.findInfoByOp(fromUserName)){ service.saveWeChatInfo(setData(object)); } }
解决方案
微信开发:将消息转发到多客服
微信公众平台多客服
微信多客服上传头像
解决方案二:
我也是 获取在线客服 老是失败
解决方案三:
{"errcode":-1,"errmsg":"system error hint: [W0S8kA0162vr20]"} 总是返回这样的错误 hint还不一样
解决方案四:
问题 解决了。。这个遗留问题。求助攻。
时间: 2024-08-29 08:07:22