使用微信公众号openid获取用户信息判断是否关注公众号

1.首先准备好公众号appid和secret 

2.设置访问微信公众号三方接口被授权获取token权限的白名单ip

3、然后登陆公众号平台进行授权域名设置,用于授权用户信息时在此域名下访问到授权文件

 4、调用接口

public Result judgeIsFollow(String openid) {
        Result<Object> result = new Result<>();
        //获取用户token
        String token = String.valueOf(redisUtil.get("gzhToken"));
        if (token == "null") {
            token = getAccessToken();
        }
        Integer subscribe = null;
        String param="access_token="+token+"&openid="+openid+"&lang=zh_CN";
        String url = "https://api.weixin.qq.com/cgi-bin/user/info"+"?"+param;
        try {
            URL urlGet = new URL(url);
            HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
            http.setRequestMethod("GET"); // 必须是get方式请求
            http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            http.setDoOutput(true);
            http.setDoInput(true);
            http.connect();
            InputStream is = http.getInputStream();
            int size = is.available();
            byte[] jsonBytes = new byte[size];
            is.read(jsonBytes);
            String message = new String(jsonBytes, "UTF-8");
            JSONObject demoJson = JSONObject.parseObject(message);
            subscribe = Integer.parseInt(demoJson.get("subscribe").toString());
            is.close();
        } catch (Exception e) {
            log.error(e.getMessage(), e);
            return Result.error("系统繁忙!");
        }
        if (1 != subscribe) {
            return result.success("未关注");
        } else {
            return result.success("已关注");
        }
    }
    public String getAccessToken() {
        RestTemplate restTemplate = new RestTemplate();
        Map<String, String> params = new HashMap<>();
        params.put("APPID", wxMiniConfigVo.getWxGzhId());
        params.put("APPSECRET", wxMiniConfigVo.getWxGzhSecret());
        params.put("grant_type", "client_credential");
        String tokenUrl="https://api.weixin.qq.com/cgi-bin/token?appid={APPID}&secret={APPSECRET}&grant_type={grant_type}";
        ResponseEntity<String> responseEntity = restTemplate.getForEntity(tokenUrl, String.class, params);
        String body = responseEntity.getBody();
        JSONObject object = JSON.parseObject(body);
        String Access_Token = object.getString("access_token");
        redisUtil.set("gzhToken", Access_Token);
        redisUtil.expire("gzhToken", Long.parseLong(object.getString("expires_in")));
        return Access_Token;
    }

参考:

(8条消息) 微信小程序结合公众号发送消息_小火神萌萌哒的博客-CSDN博客

微信公众号网页授权域名设置 - 简书 (jianshu.com)

可以在小程序内判断用户是否关注公众号吗? | 微信开放社区 (qq.com)

java后端判断用户是否关注指定公众号_leo-CSDN博客_java判断用户是否关注公众号

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值