最近开发了一个投票活动,用户可上传一张照片,分享微信好友或朋友圈邀请好友点赞,点赞前几名可获得相应的奖品。上传照片的用户必须关注某公众号。

用户点击上传按钮,后台判断用户是否关注公众号,关注则前端可使用相机或选择本地照片进行上传 ,未关注则弹出二维码。

对于判断用户是否关注某公众号,微信官方提供的接口是:

https://api.weixin.qq.com/cgi-bin/user/info?access_token="+accessToken+"&openid="+openid+"&lang=zh_CN    其中access_token是全局的access_token,openid就是当前微信关于当前服务号的openId    附上代码
 1     public static Boolean judgeFollow(String openId){
 2         List<NameValuePair> params=new ArrayList<NameValuePair>();
 3         params.add(new BasicNameValuePair("xx","xx"));
 4         params.add(new BasicNameValuePair("xxx","xx"));
 5         params.add(new BasicNameValuePair("openid",openId));
 6         String s = new HttpUtil().get("http://xxx.xxx.cn/xx/xxx.php", params, "UTF-8", "UTF-8");
 7         String decode = DES.Decode(s);
 8         JSONObject jsonObject = JSONArray.parseObject(decode);
 9         String data = jsonObject.get("data").toString();
10         JSONObject jsonObject1 = JSONObject.parseObject(data);
11         Integer subscribe = jsonObject1.getInteger("subscribe");
12         if(subscribe==null){
13             return false;
14         }
15         return 1==subscribe?true:false;
16     }

上面的这个接口地址是公司封装好了的,没有直接请求官方的接口,只用带一个openID过去就行了,另外2个参数xx是公司接口需填的参数。json包是阿里的fastjson。通过这个接口获得subscribe这个字段,是否订阅,为1则表示当前微信关注了该公众号,为0则表示未关注。 完整的请求结果为

"subscribe":1,"openid":"oeQDZabsrfs12341***","nickname":"会飞的猫","sex":1,"language":"zh_CN","city":"武汉","province":"湖北","country":"中国","headimgurl":"http://wx.qlogo.cn/mmopen/kBwGJuwqK9**********************ibVUEpgFE90LH3b3uj7AYRjZP/0","subscribe_time":1474964999,"unionid":"oGCG8t5**********jPQTPw","remark":"","groupid":0,"tagid_list":[只需要拿到subscribe这个字段的值就可以了。 下面附上一段直接请求官方接口的代码,也是网上搜的,试了一下没有问题。原文地址:https://blog.csdn.net/qq_23842683/article/details/53888927 
 1     public static boolean judgeIsFollow(String openid){
 2         logger.error("判断是否关注:"+openid);
 3         Integer subscribe=null;
 4         String accessToken = getAccessToken();
 5         String url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token="+accessToken+"&openid="+openid+"&lang=zh_CN";
 6         try {
 7             URL urlGet = new URL(url);
 8             logger.error("urlGet:"+urlGet);
 9             HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
10             http.setRequestMethod("GET"); // 必须是get方式请求
11             http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
12             http.setDoOutput(true);
13             http.setDoInput(true);
14             http.connect();
15             InputStream is = http.getInputStream();
16             int size = is.available();
17             byte[] jsonBytes = new byte[size];
18             is.read(jsonBytes);
19             String message = new String(jsonBytes, "UTF-8");
20             JSONObject demoJson = JSONObject.fromObject(message);
21             System.out.println("JSON字符串:"+demoJson);
22             subscribe = demoJson.getInt("subscribe");
23             is.close();
24             logger.error("当前subscribe:"+subscribe);
25         } catch (Exception e) {
26             e.printStackTrace();
27         }
28         return 1==subscribe?true:false;
29     }

上面那个getAccessToken()方法是获得我当前服务号的全局accessToken。其余的基本和原文一样。有不对的地方希望各位看官批评指正。(虽然好像没什么人看)

转载于:https://www.cnblogs.com/Yang777/p/10113077.html

请求微信接口,判断用户是否关注公众号相关推荐

  1. java后端判断用户是否关注公众号

    /*** 判断用户是否关注了公众号* @param openid* @return*/ public static boolean judgeIsFollow(String openid){int s ...

  2. 实现微信扫描二维码关注公众号,直接注册登录网站

    互联网时代,不管是以哪种形式存在的应用,移动端或者PC网站,注册登录功能是用户访问应用的第一步,可以说,注册登录用的方不方便在一定程度上能决定用户的去留.对于用户来说,能够越简单,不用动手做过多操作就 ...

  3. PHP请求微信接口获取用户电话号

    前言情景剧 业务场景是为了在用户登录的时候判断其是否已经成功注册,没有成功注册的话就将获取到的openid和session_key加密后作为token传给前端,然后让前台通过组件获得code之后连着t ...

  4. 微信扫描二维码关注公众号并成为下级

    一.微信公众号配置"服务器配置" https://blog.csdn.net/qq_31267183/article/details/83181157 二.生成带标识符的二维码 1 ...

  5. 微信小程序 official-account组件 关注公众号

    昨天微信小程序发布了 official-account 相关组件,从意思上来讲可以通过小程序直接点击标签关注对应的公众号今天一上班就试了一下. 文档不长,但是对于我这种看文档能力较差的人还是有点吃力的 ...

  6. 微信自媒体运营之取消关注公众号跟踪

    说到自媒体.新媒体运营,似乎是很潮的一份工作,其实相当苦逼. 每天得琢磨写点什么,才能博得粉丝芳心,不仅要紧跟热点,还得掐对推送时间.每天20点之后推送自媒体信息的人,多有人在.(有同感的自动转走!! ...

  7. uniapp/微信扫码打开公众号(并且判断是否关注公众号)

    1.将二维码下载下来 这个二维码微信扫的话,未关注会进入到公众号详情,关注的话,会进入到公众号内 2.判断用户是否关注公众号 请求微信接口,判断用户是否关注公众号_weixin_33971205的博客 ...

  8. 微信公众号开发__微信网页授权并获取用户基本信息(是否关注公众号、头像、昵称等)

    本人最近要做微信公众号网页开发的项目,其中有个需求是判断用户是否关注公众号,由于之前没有接触过微信授权的东西,所以提前开始做调研.在度娘上看了好多博客.百度知道.百度经验.知乎问答等,还仔细阅读了微信 ...

  9. 一个字段,就可以判断是否关注公众号,你信吗

    关于如何判断用户是否关注公众号的方法,之前写过一篇文章微信小程序里判断是否关注了公众号,这个方法很简单,但是产品经理觉得这个样子用户体验很差,得优化,当听到他这么说的时候,心里有一万只草泥马在奔腾,但 ...

最新文章

  1. ​Nessus更新到8.9.1
  2. 开源中国iOS客户端学习——(五)网络通信ASI类库(1)
  3. python中文读音ndarray-Python中Numpy ndarray的使用详解
  4. [ Luogu 4626 ] 一道水题 II
  5. Oracle DBlink相关
  6. 东方金信:让大数据为民服务
  7. 3.1.1 计算机网络之数据链路的基本概念和功能概述
  8. Refer to the WebSite
  9. Jerry文章《浅谈Java和SAP ABAP的静态代理和动态代理,以及ABAP面向切面编程的尝试一文的源代码》
  10. fastjson转换时有大括号或者冒号或者有中括号_[Python Basic] 字符串处理以及类型转换 1...
  11. java numberformat 方法_Java NumberFormat parse()用法及代码示例
  12. 【codevs1477】【BZOJ2733】永无乡,Splay+启发式合并
  13. mail linux 客户端,Nylas Mail: 一个 Linux 的免费邮件客户端
  14. 电源管理总线 (PMBus)
  15. 史上最强百度网盘下载限速破解方法大全
  16. 【imessage软件群推送】 “CMCC“ | grep password #待补充 重置后撤销暂存的变更
  17. 计算机网络浅谈,浅谈计算机网络的重要性
  18. 像windows一样给Mac os重装系统
  19. 【自学C++】C++ cout clog cerr区别
  20. 根据PLL相噪测试曲线计算jitter的Matlab程序

热门文章

  1. 如何调试NativeSample
  2. 我很明确自己未来的方向,计算机和经济外加管理
  3. python3数字全排列怎么搞_python使用递归解决全排列数字示例
  4. 第三届“SLAM技术及应用”暑期学校视频分享(完整版)
  5. 图像处理学习--前篇--像素相关
  6. 基于Javaweb的订餐管理系统的介绍和分析
  7. 图解TCP数据报结构以及三次握手(非常详细)
  8. 认识 UART 接口
  9. 数据结构与算法(C++)– 贪婪算法(Greedy algorithm)
  10. Kotlin实践(3)-入口 函数