liian_q 2015-11-20 03:01 采纳率: 0%
浏览 5546

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

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

  • zlm285998230 2016-01-21 10:11
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题