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

作者:用户 来源:互联网 浏览:2713 次 时间:2016-07-07 10:01:20

微信微信开发多客服获取在线客服微信多客服

获取在线客服-微信公众号多客服 获取多客服老是失败 - 摘要: 微信公众号多客服获取多客服老是失败接口放回的错是accesstoken失效了可是我accesstoken是先获取存到数据库然后隔7000秒重新获取求大神帮我看看这是获取在线客服的方法publicLis

问题描述

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

接口放回的错 是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还不一样

解决方案四:

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

【云栖快讯】诚邀你用自己的技术能力来用心回答每一个问题,通过回答传承技术知识、经验、心得,问答专家期待你加入!  详情请点击
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备

热点导航