前言:

官方参考连接:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

1、用户同意授权,获取code

public void getCode(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//appid是公众号的appidString redirect_uri=Param.local_url+"wx/openid";String url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&redirect_uri="+ URLEncoder.encode(redirect_uri, "GBK")+ "&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect";response.sendRedirect(url);}

需要注意的是链接需要用 URLEncoder.encode(url)进行编码,在连接中加入 connect_redirect=1 是防止网页授权两次或多次重定响应问题,我这里的scope=snsapi_base不会弹出授权页面,但只能拿到用户的openid

2、在回调地址中通过code获取用户的openid

public void openid(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/xml; charset=UTF-8");String oauth2Url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appid + "&secret=" + AppSecret+ "&code=" + request.getParameter("code") + "&grant_type=authorization_code";JSONObject jsonObject = JSONObject.fromObject(HttpRequestUtil.sendGet(oauth2Url));String pubopenid = jsonObject.getString("openid");System.out.println("获取的openid"+pubopenid);}

其中的sendGet()方法如下:

public static String sendGet(String url) {String result = "";BufferedReader in = null;try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection connection = realUrl.openConnection();// 设置通用的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 建立实际的连接connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {}// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine()) != null) {//System.out.println("jieguo--------几万个"+result);result += line;}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}

3、公众号配置网页授权域名

在公众号的【开发】-【接口权限】-【网页授权获取用户基本信息】-【网页授权域名】中配置域名

没有正式公众号的可以用测试号试用:http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

获取微信公众号用户的openid相关推荐

  1. vue axios封装 获取微信公众号用户的openid

    目录 axios封装 openid vue vue+ts axios封装 一般会在项目的src目录中,新建一个文件夹,作为网络请求模块,用来封装axios, 创建axios实例: axios.crea ...

  2. 用java代码实现获取微信公众号用户关注列表

    获取微信公众号用户关注列表 通用工具类:CommonUtil package com.weixin.util;import java.io.BufferedReader; import java.io ...

  3. 获取微信公众号用户分组-php开发管理公众号用户

    经过上一节课程的学习, 你已经能够新建很多的用户分组, 要在我们的web服务器管理这些分组时, 你可以先从微信服务器把所有的分组获取到, 然后保存到自己的web服务器数据库, 这样下次使用时, 就可以 ...

  4. 手把手教你如何获取微信公众号用户的个人信息(包括OpenId)

    最近,对微信公众号有点兴趣,就自己研究了研究里面的一些内容,发现还挺有意思的,而且通过微信公众号可以调用一些比较有意思的接口,就比如百度开发服务平台 点击进入 里面的很有接口,就比较常见的翻译,语音识 ...

  5. php获取微信公众号用户信息头像,微信公众号的web页面如何获取微信用户名和头像?...

    首先,你的网站入口必须是微信服务号(开通认证.拥有获取用户openid权限:订阅号是不行的). 方法:网页通过微信的Oauth2认证链接.(必须是微信的内置浏览器,通过微信服务号进入) 操作:通过服务 ...

  6. H5获取微信公众号用户openId,用户信息

    一共两步:1:用户同意授权,获取code,2:将code值传给后台获取用户openId或用户信息 一.怎样获取code值 1.登录微信公众平台后台获取公众号的AppId,设置回调地址. 回调地址设置: ...

  7. 微信公众号为指定openid用户推送消息

    微信公众号为指定openid用户推送消息 微信提供的开放接口中,有两个给指定openid的用户发送信息的接口,适用场景应该是向 预约用户或者中奖用户发送消息. 第一个接口:客服发送消息 请求方式: P ...

  8. Android实现绑定微信公众号,获取相对公众号的唯一openId

    Android绑定微信公众号.获取相对公众号的唯一openId 注意:为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号.移动应用之间做用户共通,则需前往微信开放平台 ...

  9. 获取微信公众号openID,code

    获取微信公众号openID public class AdminUtil{#region 获取OpenID/// <summary>/// 获取OpenID/// </summary ...

  10. 获取微信公众号关注总人数和用户列表

    工作需要获取公司获取实时公众号总人数,我当时第一反应看管理后台不就行了·····,想完就觉得有点傻,看管理后台还需要让我些什么呀!!! 然后开始整理思路,想要获取微信公众号管理后台数据,肯定是要调用微 ...

最新文章

  1. python大牛 关东升_《Python从小白到大牛》第4章 Python语法基础
  2. 自定义控件详解(六):Paint 画笔MaskFilter过滤
  3. Mac os android×××,环境配置 mountain lion10.8.2 配置×××环境,并编译源码
  4. 调研了下 AI 作曲,顺便做了期视频...快进来听歌!
  5. Vue第二部分(5):编程式的路由导航和实战案例
  6. 复数基础—— i = 根号 -1 _3
  7. 两种数据仓库分层实例
  8. MySQL8.0数据库配置注意事项
  9. java 获取真实ip地址
  10. TiDB 源码阅读系列文章(二十)Table Partition
  11. 《javascript高级程序设计》笔记:继承
  12. excel的表格数据转为数据库的dbf文件
  13. 迅雷“应版权方要求,文件无法下载”完美解决方法!(¥28)
  14. 【ansible】如何将ansible jinja2的双花括号转义?
  15. 【Vertica系列】一、安装建库
  16. React Native系列——WebView组件使用介绍
  17. 物联网设备的网络连接---上篇
  18. 高一女孩成 AI 赛事奖项收割机,05 后新星如何踏上 CV 之路?
  19. 数学建模之层次分析法模型
  20. 腾讯测试开发工程师实习生面经(惨,接到7次面试,最后还是跪了,分享经验)

热门文章

  1. 3des加密及解密处理
  2. 怎么截取长图/滚动截图?(一文教你迅速截长图)?
  3. 【Office】Word空格无法添加下划线
  4. Unity资源管理(一)
  5. java的农夫养牛_以前农村里养牛的,为何喜欢在牛脖子上挂个铃铛?
  6. 在线有道翻译突然页面变了?
  7. 怎样在苹果Mac鼠标或触控板上复制和粘贴?
  8. vue 下载文件 前后端代码亲测有效
  9. SQL解密ctext字段内容函数
  10. 微信小程序---详情页