获取微信公众号用户的openid
前言:
官方参考连接: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相关推荐
- vue axios封装 获取微信公众号用户的openid
目录 axios封装 openid vue vue+ts axios封装 一般会在项目的src目录中,新建一个文件夹,作为网络请求模块,用来封装axios, 创建axios实例: axios.crea ...
- 用java代码实现获取微信公众号用户关注列表
获取微信公众号用户关注列表 通用工具类:CommonUtil package com.weixin.util;import java.io.BufferedReader; import java.io ...
- 获取微信公众号用户分组-php开发管理公众号用户
经过上一节课程的学习, 你已经能够新建很多的用户分组, 要在我们的web服务器管理这些分组时, 你可以先从微信服务器把所有的分组获取到, 然后保存到自己的web服务器数据库, 这样下次使用时, 就可以 ...
- 手把手教你如何获取微信公众号用户的个人信息(包括OpenId)
最近,对微信公众号有点兴趣,就自己研究了研究里面的一些内容,发现还挺有意思的,而且通过微信公众号可以调用一些比较有意思的接口,就比如百度开发服务平台 点击进入 里面的很有接口,就比较常见的翻译,语音识 ...
- php获取微信公众号用户信息头像,微信公众号的web页面如何获取微信用户名和头像?...
首先,你的网站入口必须是微信服务号(开通认证.拥有获取用户openid权限:订阅号是不行的). 方法:网页通过微信的Oauth2认证链接.(必须是微信的内置浏览器,通过微信服务号进入) 操作:通过服务 ...
- H5获取微信公众号用户openId,用户信息
一共两步:1:用户同意授权,获取code,2:将code值传给后台获取用户openId或用户信息 一.怎样获取code值 1.登录微信公众平台后台获取公众号的AppId,设置回调地址. 回调地址设置: ...
- 微信公众号为指定openid用户推送消息
微信公众号为指定openid用户推送消息 微信提供的开放接口中,有两个给指定openid的用户发送信息的接口,适用场景应该是向 预约用户或者中奖用户发送消息. 第一个接口:客服发送消息 请求方式: P ...
- Android实现绑定微信公众号,获取相对公众号的唯一openId
Android绑定微信公众号.获取相对公众号的唯一openId 注意:为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号.移动应用之间做用户共通,则需前往微信开放平台 ...
- 获取微信公众号openID,code
获取微信公众号openID public class AdminUtil{#region 获取OpenID/// <summary>/// 获取OpenID/// </summary ...
- 获取微信公众号关注总人数和用户列表
工作需要获取公司获取实时公众号总人数,我当时第一反应看管理后台不就行了·····,想完就觉得有点傻,看管理后台还需要让我些什么呀!!! 然后开始整理思路,想要获取微信公众号管理后台数据,肯定是要调用微 ...
最新文章
- python大牛 关东升_《Python从小白到大牛》第4章 Python语法基础
- 自定义控件详解(六):Paint 画笔MaskFilter过滤
- Mac os android×××,环境配置 mountain lion10.8.2 配置×××环境,并编译源码
- 调研了下 AI 作曲,顺便做了期视频...快进来听歌!
- Vue第二部分(5):编程式的路由导航和实战案例
- 复数基础—— i = 根号 -1 _3
- 两种数据仓库分层实例
- MySQL8.0数据库配置注意事项
- java 获取真实ip地址
- TiDB 源码阅读系列文章(二十)Table Partition
- 《javascript高级程序设计》笔记:继承
- excel的表格数据转为数据库的dbf文件
- 迅雷“应版权方要求,文件无法下载”完美解决方法!(¥28)
- 【ansible】如何将ansible jinja2的双花括号转义?
- 【Vertica系列】一、安装建库
- React Native系列——WebView组件使用介绍
- 物联网设备的网络连接---上篇
- 高一女孩成 AI 赛事奖项收割机,05 后新星如何踏上 CV 之路?
- 数学建模之层次分析法模型
- 腾讯测试开发工程师实习生面经(惨,接到7次面试,最后还是跪了,分享经验)