栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

企业微信请求接口之替换token丢失,报错invalid access

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

企业微信请求接口之替换token丢失,报错invalid access

 1.使用spring原生restTemplate请求接口
// GET 获取部门列表
GET_DEPARTMENT_URL("https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=ACCESS_TOKEN&id=ID")

String urlValue = QyaApiEnum.GET_DEPARTMENT_URL.getUrlValue();
String accessToken = tokenUtil.getAccessToken();
String url = urlValue.replace("ACCESS_TOKEN", accessToken).replace("ID", id);
ResponseEntity forEntity = restTemplate.getForEntity(url, String.class);
log.info("获取部门列表:" + forEntity.getBody());
2.由于企业微信根据企业ID和凭证密钥获取的access_token长度过长,在测试过程中,发现获取的token与替换之后请求的token由于使用replace替换出现字符串丢失
// 根据https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET获取的的token为
// ******************NukGFk6AIDnmLC9KRSngNkPr38IzAaE8feZKlgviBrSM67ayjpR9T0zWQOO7QlujPA
String url = urlValue.replace("ACCESS_TOKEN", accessToken).replace("ID", id);
// 替换后的token为******************NukGFk6A1nmLC9KRSngNkPr38IzAaE8feZKlgviBrSM67ayjpR9T0zWQOO7QlujPA
 3.在调用的时候,还重新获取token比对了一下,最后发现是替换丢失,报错信息如下
// 获取token的有效期是7200秒。如果出现token超时也会报此错误。
// 当时使用postman测试此token请求接口是正常的。
{
    "errcode": 40014,
    "errmsg": "invalid access_token",
    "department": []
}
4.后来采用UriComponentsBuilder进行拼接请求参数,也可以使用map进行传参
    public static String handUrlParam(String httpUrl, String accessToken, String departmentId, String fetchChild) {
        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(httpUrl)
                .queryParam("access_token", accessToken)
                .queryParam("department_id", departmentId)
                .queryParam("fetch_child", fetchChild);
        return builder.build().encode().toUriString();
    }
5.总结 

因为之前使用restTemplate调用http请求是map传参,由于get请求传参较少,当时就直接在url拼接替换,未考虑字符串过长出现丢失的情况。最后经过网上查看企业微信官方社区,然后查找代码发现问题。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396555.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号