项目开发中微信渠道为了获取用户地理位置(经纬度)需要调用微信JSAPI,在参数的获取过程中需要后端服务器请求获取access_token,在生产上报出了空指针,也就是未获取到access_token,我们看下获取access_token接口说明。

接口调用请求说明

https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

参数说明

参数

是否必须

说明

grant_type


获取access_token填写client_credential

appid


第三方用户唯一凭证

secret


第三方用户唯一凭证密钥,即appsecret

返回说明

正常情况下,微信会返回下述JSON数据包给公众号:

{"access_token":"ACCESS_TOKEN","expires_in":7200}

参数说明

参数

说明

access_token

获取到的凭证

expires_in

凭证有效时间,单位:秒

公司开发分为sit uat 准生产 生产环境,在sit和uat配置时使用的是微信测试号,没有出现任何问题,生产偏偏出现问题,在排查中发现微信接口返回报文是

{
“errcode”: -1000
“errmsg”: "system error"
}
提示:未知返回状态.

经过各种百度发现官方的一段说辞。

为了提高公众平台开发者接口调用的安全性,避免一旦开发者ID和密码泄露后给帐号造成损失。我们对调用“获取access_token”接口增加IP白名单校验:只有将IP地址设置为公众号的IP白名单,才能成功调用该接口。

开启IP白名单的步骤如下:

1、登录公众平台,进入开发->基本配置页面

Access Token java放内存怎么放 access token为空_IP

2、点击配置进入IP白名单设置页

Access Token java放内存怎么放 access token为空_IP_02

3、填写IP地址列表

多个之间回车隔开

4、管理员扫码确认保存


这里说明了问题是未配置白名单ip,为什么会返回-1000状态而不是40164状态,是因为在生产的企业微信未配置任何ip白名单。未配置ip白名单返回-1000,配置了但是不再白名单ip中返回40164。

公司项目后端是通过代理服务器出去的,所以我们在配置的时候找到了代理服务器的出口也就是出口的公网ip全部配置进ip白名单中,问题解决。