一、登录微信公众号的测试环境,找到“网页授权获取用户基本信息”点击修改,添加上自己的回调地址域名。测试时可以写IP:端口号,正式环境只支持域名不要写http://或https://。

二、步骤:

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

参考链接:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
  • scope的参数有2种:一种是snsapi_base权限只能获取OpenId而且不会弹出授权页面,另为一种是snsapi_userinfo权限会弹出授权页面并且会获取用户信息。
  • redirect_url:是回调地址,当请求成功的时候会重定向到回调页面,并返回code和state。回调地址必须是设置的回调地址域名下且需要进行urlEncode处理。
    如:http://xxxx.xxxx.cn/test/wechat/redirect?code=CODE&state=1

2、通过code获取access_token:

参考链接:

https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+appSecret+"&code="+code+"&grant_type=authorization_code

3、通过access_token获取用户信息:

参考链接:

https://api.weixin.qq.com/sns/userinfo?access_token="+access_token+"&openid="+openId+"&lang=en

三、代码

1、通过消息模板推送授权链接:

/*** 推送给新关注的用户授权* @param openId 用户的openId*/public static void followMessage(String openId) {try {// 发送消息的时间SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateFormat = simpleDateFormat.format(new Date());// 获取AccessToken的值String accessToken = WaChatServiceUtil.getAccessToken();String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken;// 获取消息模版idString Message = MessageTemplateEnum.FOLLOW_MESSAGE_TEMPLATE.getKey();// 回调地址,需要用urlEncode对链接进行处理,微信公众号中需要将授权回调页面域名配置好回调地址需要在回调页面域名下String callbackUrl = "http%3A%2F%2F"+DOMAINNAME+"%2Fsampling-merchant-web%2Fherman%2Ftest%2Fwechat%2Fredirect.cgi";// appIdString appId = WaChatServiceUtil.getAPPID();// 授权地址,用户点击后将进行授权,返回给回调地址code值,state为任意a-zA-Z0-9的参数值,最多128字节String empowerUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appId + "&redirect_uri=" + callbackUrl + "&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";// 设置模版消息的内容WeChatTemplate wc = new WeChatTemplate();wc.setTouser(openId);wc.setTemplate_id(Message);wc.setUrl(empowerUrl);Map<String, TemplateData> m = new HashMap<>();m.put("first", new TemplateData("欢迎关注mamain,点击下方进行授权", "#000000"));m.put("time", new TemplateData(dateFormat, "#000000"));m.put("url", new TemplateData("点击进行授权,获取您的微信名。", "#173177"));m.put("remark", new TemplateData("有疑问请联系客服!", "#FF0000"));wc.setData(m);//post发送授权消息模版String rString = WeChatUtils.sendPost(url, JSON.toJSONString(wc));logger.info("发送授权模版消息结果为:{}", rString);} catch (Exception e) {logger.error("发送授权模版消息失败!", e);}}

2、获取用户信息

/*** 回调:微信授权,获取用户code*/@RequestMapping(value = "wechat/redirect", method = RequestMethod.GET,produces = "text/html; charset=UTF-8")@ResponseBodypublic String wechatRedirect(HttpServletRequest request) throws IOException {try {// 获取用户codeString code = request.getParameter("code");if (null==code){logger.error("code为空!");return "error:code为空,授权失败";}logger.info("code为{}",code);// 获取 access_tokenString appid= WaChatServiceUtil.getAPPID();String appSecret=WaChatServiceUtil.getAPPSECRET();String getToken="https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+appSecret+"&code="+code+"&grant_type=authorization_code";JSONObject token = JSONObject.parseObject(WeChatUtils.sendGet(getToken));Object access_token=token.get("access_token");String openId= (String) token.get("openid");logger.info("access_token:{},openid{}",access_token,openId);// 获取用户信息String getUser="https://api.weixin.qq.com/sns/userinfo?access_token="+access_token+"&openid="+openId+"&lang=zh_CN";JSONObject user = JSONObject.parseObject(WeChatUtils.sendGet(getUser));String wechatName= (String) user.get("nickname");logger.info("用户名为:{},openid为:{}",wechatName,openId);}catch (Exception e){logger.error("获取用户信息异常!", e);}return "<h1 align=\"center\">您已授权成功</h1>";}

微信公众号--根据用户opneId获取用户信息相关推荐

  1. 微信公众号网页授权,获取用户信息以及openid -- PHP后台

    微信公众号网页授权,获取用户信息以及openid 这几天做项目,想通过公众号的appid获取用户的openid就,然后在网上查资料,问朋友,最后找到了方法,就是这个网页授权. 起初一直很蒙,这个怎么弄 ...

  2. 微信公众号授权登录,获取用户信息openid(亲测有效)

    需求:客户登录微信公众号进行账号注册,绑定微信openid,下次根据openid验证自动登录. 详细代码:https://download.csdn.net/download/yaya_jn/7492 ...

  3. 微信公众号开发之授权获取用户信息

    微信开发交流群:148540125 系列文章参考地址 极速开发微信公众号 欢迎留言.转发.打赏 项目源码参考地址 点我点我--欢迎Start 前几篇文章已讲完如何导入项目,如何启动配置项目,如何成为开 ...

  4. 微信公众号网页版,获取用户code时出现跨域问题的解决办法之一

    前提是微信公众号后台设置没有问题. 网页授权域名不要设置有问题 根据微信[官方文档] 第一步:用户同意授权,获取code 在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高 ...

  5. 微信公众号授权登录、获取用户信息(openid)

    配置微信公众号开发环境就不赘述了. 进入正题..... 首先,先理清楚微信登录的两种实现途径(这里我们先演示一种)1.微信开放平台实现,2.微信公众号(微信公众平台)实现. 因为微信登录不同与QQ登录 ...

  6. 微信公众号开发中,获取用户资料的两种方式

    2019独角兽企业重金招聘Python工程师标准>>> 微信公众号的开发主要是在服务号环境下进行,订阅号是拿不到用户的资料的,因此,下文的讨论都基于微信服务号. 微信公众号的两个ac ...

  7. 微信公众号发送小程序卡片_微信公众号将能够直接给用户推送小程序卡片,社交电商开始发力...

    公众号或能在对话框中直接给粉丝推送小程序卡片了,这个功能似乎正在灰度测试中. 微信公众号将能够直接给用户推送小程序卡片,社交电商开始发力 一直以来,微信公众号和微信小程序一直是腾讯基于微信生态的两款明 ...

  8. 小程序 php wecahtpay,PHP 微信公众号,小程序获取支付参数。微信支付

    PHP 微信公众号,小程序获取支付参数.微信支付 发布时间:2018-09-26 11:19, 浏览次数:278 , 标签: PHP 首先下载微信官方demo放入项目中 地址:https://gith ...

  9. 微信公众号开发:如何获取openId(最简单的方式)

    最近的项目涉及到微信公众号的开发,必然要涉及到微信公众号的openId的获取,以及appId的获取,appId的获取很简单,但是如何才能获取到openId呢? 我找到了一种最简单的获取方法,整理如下: ...

  10. 怎样实现微信公众号点击菜单自动回复文字信息

    为了满足微信公众号点击菜单自动回复文字信息的需要,第三方平台微号帮提供了粉丝点菜单定时推送功能实现,粉丝点击公众号菜单栏可以自动回复文字信息,可以更改回复信息的昵称和头像,回复信息内容可以显示粉丝昵称 ...

最新文章

  1. 如何能在git bash中使用mvn命令_使用Github Actions完成CI/CD工作
  2. 关于int main(int argc,char *argv[])
  3. Highlighting System
  4. react学习(69)--置空操作
  5. 马化腾300万奖励中国女排 网友:马云老师清空购物车还安排吗?
  6. java getidentifier_android – 如何使用getResource.getIdentifier()获取布局?
  7. CMake编译protobuf
  8. Spring cloud实现服务注册及发现
  9. 做个轻松省力的父母的几个原则
  10. sh计算机c盘如何管理,c盘瘦身三种方法详解
  11. Photometric Stereo 光度立体三维重建(四)——光源标定
  12. linux 网口对应网卡_【电脑知识】在纯DOS下更改BIOS中网卡MAC地址教程
  13. 大数据SQL中的Join【谓词下推】讲解
  14. 163vip邮箱提醒您谨防邮箱诈骗,点击查看常见套路
  15. 分布式缓存之memcached以及LAMP的搭建
  16. (一)OSG初学者入门基础教程
  17. 第一次写需求文档的心酸历程
  18. 2017“中国好SaaS”上海站Top3出炉,企业级SaaS创业正在向产业化迈进
  19. h5页面的雷达图 五边形_html5 雷达图制作
  20. Pycharm激活当前虚拟环境本身的安装包空间

热门文章

  1. 阿里云推荐码 9折优惠 vx89to
  2. 头一回见!提升10倍效率,阿里给业务校验平台插上了AI的翅膀
  3. python: plt.cm.Set1, Set2,Set3返回颜色
  4. 学计算机去什么大学好,去美国学计算机专业什么大学好
  5. 征集难于处理的机械臂奇异点位
  6. 【iOS开发】ipa安装到手机上的三种方式
  7. 线程(六)之LOCK和synchronized
  8. 序文 【IT圈是个什么玩意儿 1 】
  9. AI行业态势感知(第七期)
  10. 小学计算机教师业务考试题库,小学数学教师业务模拟考试试题