liian_q
liian_q
2015-11-20 03:01

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

  • 微信
  • 多客服
  • 获取在线客服

接口放回的错 是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条回答