java验证用户是否关注了微信公众号

编程

 第一步:获取公众号的access_token,记得将access_token进行缓存,这个每天只有2000次访问限制。

/**

* 是否关注了微信公众号

* @param openId

* @return

* @throws BusinessException

* @return Object ,true:已关注,false:未关注

* @author tyg

* @date 2019年1月14日上午11:51:05

*/

@Override

public String getStoreDistributionAccessToken(){

String access_token = null;

try {

//查询是否还有缓存

BoundValueOperations<String, String> ops = redisTemplate.boundValueOps(CacheUnifiedEnum.accessToken.getKey());

//缓存时长

if(StringUtils.isBlank(ops.get()) || ops.getExpire().longValue() < 20L) {

Map<String, String> params = new HashMap<String, String>();

params.put("grant_type", "client_credential");

params.put("appid", "wx12fdsf4a5f4d6");

params.put("secret", "fdf456f46fd");

String respData = HttpUtils.sendGet("https://api.weixin.qq.com/cgi-bin/token", params);

System.out.println("getaccess_token=====

"+respData);

json = JSON.parseObject(respData);

ops.set(json.getString("access_token"));

ops.expire(CacheUnifiedEnum.accessToken.getTime(), TimeUnit.SECONDS);

}

} catch (Exception e) {

e.printStackTrace();

}

return access_token;

}

第二步:subscribe如果为1,则表示已经关注了微信公众号.

/**

* 是否关注了微信公众号

* @param openId

* @return

* @throws BusinessException

* @return Object ,true:已关注,false:未关注

* @author tyg

* @date 2019年1月14日上午11:51:05

*/

public Object isXSNSubscribe(String openId)throws BusinessException {

Assert.isBlank(openId, "openId can"t be null");

// 微信的access_token

String access_token = wechatI.getStoreDistributionAccessToken();

// 请求地址

String url = String.format("https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=zh_CN", access_token, openId);

String result = HttpTookit.doGet(url, null, "UTF-8", true);

System.out.println(result);

Assert.isBlank(result, "微信用户信息有误!");

JSONObject json = JSON.parseObject(result);

return ResultUtil.success("1".equals(json.getString("subscribe")));

}

 

以上是 java验证用户是否关注了微信公众号 的全部内容, 来源链接: utcz.com/z/514673.html

回到顶部