微信公众号多客服 获取多客服老是失败

接口放回的错 是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));
                    }
                }

3个回答

问题 解决了。。这个遗留问题。求助攻。

我也是 获取在线客服 老是失败

cfan_haifeng
cfan_haifeng 回复liian_q: 获取在线客服 老是失败 ,不存在接收方和发送方啊
接近 4 年之前 回复
cfan_haifeng
cfan_haifeng 回复liian_q: 获取在线客服 老是失败 ,不存在接收方和发送方啊
接近 4 年之前 回复
liian_q
liian_q 我解决啦 我把接收方和发送方弄反了
接近 4 年之前 回复

{"errcode":-1,"errmsg":"system error hint: [W0S8kA0162vr20]"} 总是返回这样的错误 hint还不一样

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问