微信公众号开发之获取用户信息
微信获取用户信息的方式有两种,静默授权(无需用户同意)和非静默授权(需要用户“ 手动点击 ”拉取授权,可以用户无需关注公众号即可获取用户信息)
整体的代码请查看最后,前边为原理介绍
首先将appid发送到指定连接,设置redirecturi回调地址
//静默授权,只获取openid snsapi_base; 非静默授权, 获取用户详细信息 snsapi_userinfoString scope = "snsapi_userinfo";//非静默授权String redirect_uri = "http://LILUO/GetUserInfoAccredit";//自己的回调地址String url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+自己的appid+"&redirect_uri="+redirect_uri+"&response_type=code&scope="+scope+"#wechat_redirect";//设置用户点击跳转地址为url,必须为用户主动点击跳转才行
微信服务器接收到请求后将含有code信息的内容添加在回调地址中并访问该回调地址,用户后台接收到访问请求后处理code,将code发送到指定的微信链接地址,拿code去换取access_token和用户openid
String code = req.getParameter("code");//换取access_token地址String url = " https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+secret+"&code="+code+"&grant_type=authorization_code";//指定微信链接地址String result = getAndPost.get(url);//发送get请求,换取access_token和用户openidJSONObject json = JSONObject.fromObject(result);//得到access_tokenString tocken = json.getString("access_token");//得到openidString openid = json.getString("openid");
利用openid和access_token拼接到指定的url中发送给微信服务器,换取用户信息
//拉取用户基本信息,根据openid和access_token去换String urlUserInfo = "https://api.weixin.qq.com/sns/userinfo?access_token="+tocken+"&openid="+openid+"&lang=zh_CN";//指定urlresult = getAndPost.get(urlUserInfo);//发送到微信服务器//System.out.println(result);JSONObject jsObj = JSONObject.fromObject(result);//将返回的数据格式化为json数据jsObj.get("name");//获取名字jsObj.get("gender");//获取性别
将获取到的信息直接存入数据库即可
获取用户详细信息(整体流程)
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String appid = "fb";String secret = "86";//获取codeString code = req.getParameter("code");//换取access_token地址String url = " https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+secret+"&code="+code+"&grant_type=authorization_code";String result = getAndPost.get(url);JSONObject json = JSONObject.fromObject(result);//得到access_tokenString tocken = json.getString("access_token");String openid = json.getString("openid");//拉取用户基本信息String urlUserInfo = "https://api.weixin.qq.com/sns/userinfo?access_token="+tocken+"&openid="+openid+"&lang=zh_CN";result = getAndPost.get(urlUserInfo);//System.out.println(result);JSONObject jsObj = JSONObject.fromObject(result);//获取详情jsObj.get("name");jsObj.get("gender");
}//用户点击时地址凭借参数String scope = "snsapi_userinfo";/只获取openid snsapi_base; 获取详细信息 snsapi_userinfoString redirect_uri = "http:LILUO/GetUserInfoAccredit";String url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+自己的appid+"&redirect_uri="+redirect_uri+"&response_type=code&scope="+scope+"#wechat_redirect";可以通过a标签让用户访问我们的地址
通过openid获取已关注用户的基本信息
/*** 获取已经关注用户的基本信息*/
public static String getUserInfo(String openid) {String url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token="+微信公众号的accesstoken+"&openid="+该用户的openid+"&lang=zh_CN";String resutl = getAndPost.get(url);//发送到微信服务器return resutl;
}
微信公众号开发之获取用户信息相关推荐
- 【微信公众号开发】获取用户信息时,有时成功获取,有时提示“invalid openid hint”
原因:保存openid的session在某个方法里被重新赋新值了.所以一旦调用了这个方法,再去获取用户信息时,就会报错.
- Spring boot 项目(十三)——实现微信公众号授权登录获取用户信息
引言 微信公众号开发中,必不可少的一环:公众号授权登录.获取微信用户信息 前期准备 内网渗透=>生成本地指定端口映射的外网域名 链接:内网渗透工具natapp使用详解 域名生成之后修改yml文件 ...
- 微信公众号开发之获取用户地理位置
使用微信的用户地理位置接口就要配置这里. 前端代码: function configWx() {var thisPageUrl = location.href.split('#')[0];$.ajax ...
- 基于Spring Boo微信公众号授权登录获取用户信息(附带完整源码)
简介 微信公众号开发中,必不少可少的一环:公众号授权登录.获取微信用户信息. 本地完整运行环境准备 内网渗透=>生成本地指定端口映射的外网域名 传送门:内网渗透工具Natapp使用详解 域名生成 ...
- 微信公众号授权(获取用户信息)
需要的工具: 微信公众号(可以申请,但做开发的,可以申请测试号,申请详细不多说了) 服务器(可以自行购买,我使用的是新浪的sae.) 编辑器(随意,不做推荐) 微信公众号开发文档(地址) !!!!!完 ...
- java实现微信公众号授权登录获取用户信息(一)
参考文章:https://blog.csdn.net/Santiago_M/article/details/79109154 : https://www.cnblogs.com/jilu/p/6123 ...
- 微信公众号接入和获取用户信息
主要原理: 1.从微信公众号发来的get请求为验证服务器安全性的 2.从微信公众号发来的post请求为接受和回复用户信息的 3.先根据是否有code来进行判断,如果有code的话,根据code换取op ...
- php下载 微信头像图片_php微信公众号开发,获取用户头像,并下载
前一篇文章说了获取用户个人信息,下面来说一下获取用户微信头像,很多开发者在显示用户信息的时候都要获取用户头像,通常获取的都是url连接, 我们需要将图片下载下来并保存,以方便我们调用:. 上一篇文章我 ...
- php微信公众号开发,获取用户头像,并下载;
前一篇文章说了获取用户个人信息,下面来说一下获取用户微信头像,很多开发者在显示用户信息的时候都要获取用户头像,通常获取的都是url连接, 我们需要将图片下载下来并保存,以方便我们调用:. 上一篇文章我 ...
最新文章
- JavaMVC 模式
- Hibernate 一对多的联系(Set关联) 对象关系映射
- wordpress漏洞_用软件工具扫描WordPress / Shopify主题恶意代码以及漏洞分析相关工具...
- mysql 大于号 优化_SQL优化 MySQL版 - 避免索引失效原则(二)
- 求序列第K大算法总结
- 图片视频预览开启和关闭脚本 Xp
- 【Python CheckiO 题解】Roman Numerals
- Mac selenium调试已经存在的Chrome浏览器
- 麒麟990 5G获外媒好评:华为Mate30系列有望引领5G时代新体验
- CDOJ 1805 矩阵 数学
- NYOJ41 - 三个数从小到大排序
- 计算机配置里面没有网络选项,解决win10网络设置中没有以太网的方法
- 对项目采购管理的分析----合同类型及例题
- 展讯7731C_M Android6.0 充电指示灯实现(一)------关机充电实现【转】
- 以美颜sdk为例,详解sdk接入流程
- c51抢答器程序汇编语言,c51单片机汇编语言单片机八位抢答器程序
- 机器学习(八)SVM支持向量机
- Nmap 扩展(一)
- TP-Link wr886n 路由器插上光纤后网速变慢问题
- 5款高校5G消息应用号测评:覆盖校园服务的方方面面