最近在做微信的公众号的开发。之前是在一个认证过的微信服务号上开发一些相应的功能。

比如说 对认证过的微信服务好进行 自定义菜单的开发,模板消息的回复以及关键词回复的功能。

但是目前新接了这样一个需求:要为一个微信的订阅号做一个类似于推广的活动,这样就需要获取登录这个活动的用户的信息,从而判断该用户有没有关注过改订阅号之类的功能。这样就需要让该微信订阅号获取到该用户的个人信息。

这个功能其实我们已经在微信的服务号上实现了,这里来回顾一下具体是如何实现的。

我们先来看微信公众号开发的文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 之微信网页授权章节。

如果我们要在微信中打开一个第三方的网页,公众号可以通过微信网页授权机制,来获取用户的基本信息,进而实现业务逻辑。这是文档中的原话。通俗的讲,微信也可以认为是一个浏览器,我们发给某个人一个链接,一点这个链接,微信会打开相关的页面。但是如何让微信知道是哪个用户打开了这个页面呢,这样就需要获取到一个用户的信息,当然及时微信获取了用户的信息,也不是所有的信息都能获取到,仅仅能获取到用户的昵称,所在城市,性别等信息,获取不到微信号的,当然是可以获取一个openid,也就是微信号的一个编码,通过openid来区分用户。

我们再来看看文档,文档中写到,微信公众号请求用户网页授权之前,得先获取网页授权的接口,也就是说需要到开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。

1.需要获取该接口权限

2.需要填写相关域名。

然后用户访问的链接url需要按照微信给的格式进行链接,也就是说你转发给别人的链接或者分享的二维码对应的链接需要按照微信的格式:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

其中appId是该微信公众号的appId, redirect_uri的值为一个天转到你的页面的地址,这里我说的可能不是太通俗易懂,那么这里借用别人的话:

这个redirect_url 就是 一个项目的映射地址,当用户点击立即体验超链接的时候,会跳转到授权登录页面,当点击授权登录之后微信公众平台会回调这个地址,并在这个地址上追加code和state参数值

http://www.example.com/oauth2.do?code=0419p3Cc0YxTtG1nadCc0Ms7Cc09p3C8&state=1 此时我们在页面的代码中可以获取到code.

那我项目中的一个例子来讲:

我访问的 地址: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx40e06c595a46ca58&redirect_uri=http%3A%2F%2Fwww.17cooltech.com%2Fxledu_wx%2Flink%2Fforward.jsp%3FappId%3Dwx40e06c595a46ca58%26linkAction%3D4&response_type=code&scope=snsapi_base&state=789#wechat_redirect

我这里跳转到我一个tomcat项目中的forward.jsp 页面中了,而在 forward.jsp 中就可以获得code

<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";String appId = request.getParameter("appId");String code = request.getParameter("code");System.out.println("appId:"+appId+", code:"+code);String linkAction = request.getParameter("linkAction");if(linkAction==null){linkAction = "0";}String linkValue = request.getParameter("linkValue");if(linkValue==null){linkValue = "0";}
%>

当然获得这个code 之后就可以获得相应的openId  从而就可以区分出用户来了。

但是这个认证过的服务好实现的办法,订阅号可以吗?

我试了下,将上述的 地址中的appId换成是订阅号的appId ,但是结果发现不行,一点链接告我“Scope 参数错误或没有Scope权限”。

这是为什么呢,因为发现订阅中没有获取到微信网页授权接口的权限,即如图:

订阅号无法获得该接口权限。然而后面的事情就比较尴尬了,订阅号没有此接口,就无法获取到用户的信息。但是怎么办呢,通过各种查网上的信息,发现订阅号是可以获得微信的openId 的 ,那就是在微信开放平台 将一个订阅号和服务号做绑定,然后让订阅号借用服务号的接口 。但是这种方法还没有验证。但是已经有例子了:

在方倍工作室的网站上有这样的需求

但是前提条件是先到微信开放平台做绑定,那今天就先到这儿,写的比较啰嗦,主要想把过程记录下来。

微信公众号开发之订阅号如何获取用户信息(一)相关推荐

  1. 公众号h5获取手机号权限_微信公众号开发之网页授权(获取用户信息)

    这次暑假留在学校参与工作室的项目,对微信公众号比较感兴趣,所以参与这方面的学习研究. 昨天完成了关于网页授权,获取用户信息方面的功能,所以乘热打铁,写上一篇.实现本篇涉及的 功能,还需要完成一些基础. ...

  2. 微信公众平台开发之订阅号申请,接口验证篇

    2019独角兽企业重金招聘Python工程师标准>>> 1,运营主体选择 微博公众平台的账号目前分为两类,一是服务号,另外一种是订阅号,分析我网站的需求(每天给粉丝推送美食信息,回复 ...

  3. 急急急求微信公众号开发接口-php如何实现获取用户发送的微信表情,并返回一个链接,用户点击进去链接就是刚才发的表情,用户可以保存表情?

    求微信公众号开发接口-php如何实现获取用户发送的微信表情,并返回一个链接,用户点击进去链接就是刚才发的表情,用户就可以保存表情到手机? 需求描述 1.用户在公众号对话框发送微信表情(GIF) 2.公 ...

  4. 微信小程序开发笔记 进阶篇④——getPhoneNumber 获取用户手机号码(小程序云)

    文章目录 一.前言 二.前端代码wxml 三.前端代码js 四.云函数 五.程序流程 一.前言 微信小程序开发笔记--导读 大部分微信小程序开发者都会有这样的需求:获取小程序用户的手机号码. 但是,因 ...

  5. 微信小程序开发笔记 进阶篇⑤——getPhoneNumber 获取用户手机号码(基础库 2.21.2 之前)

    文章目录 一.前言 二.前端代码wxml 三.前端代码js 四.后端java 五.程序流程 六.参考 一.前言 微信小程序开发笔记--导读 大部分微信小程序开发者都会有这样的需求:获取小程序用户的手机 ...

  6. 微信小程序开发笔记 进阶篇⑥——getPhoneNumber 获取用户手机号码(基础库 2.21.2 之后)

    文章目录 一.前言 二.前端代码wxml 三.前端代码js 四.后端java 五.程序流程 六.参考 一.前言 微信小程序开发笔记--导读 大部分微信小程序开发者都会有这样的需求:获取小程序用户的手机 ...

  7. 微信小程序如何进行登录授权和获取用户信息

    微信小程序如何进行登录授权和获取用户信息

  8. 微信公众号开发之网页授权认证获取用户的详细信息,实现自动登陆

    原创声明:本文转来源本人另一博客[http://blog.csdn.net/liaohaojian/article/details/70175835]绝非他人处转载 从接触公众号到现在,开发维护了2个 ...

  9. Java微信公众号开发微信网页授权之前端传递code方式获取用户信息

    本片博客讲解的网页授权分为两步,前端先传递backUrl(回调地址)到后台网页授权接口,该接口拿到回调地址后组装授权连接,重定向到前端页面,前端页面截取Code,传入后端获取用户信息方法,获取用户信息 ...

  10. 根据微信公众号关注/取消关注事件,获取用户信息

    第一步:微信公众平台->基本配置->服务器配置->配置接收地址 第二步:接收微信服务器推送过来的事件 微信文档地址: 关注/取消关注事件 用户在关注与取消关注公众号时,微信会把这个事 ...

最新文章

  1. Autocad 3D 完全学习教程
  2. linux pureftp mysql_在Ubuntu下安装apache2+php5+mysql5+pureftp+ftp
  3. 热烈庆祝 ubuntu10.10发布
  4. mysql 白皮书_mysql企业版 《 MySQL企业版中文白皮书 》.cn.doc
  5. netflix_学习Netflix管理员–第2部分
  6. H3C查看系统启动配置文件
  7. POJ 2503-Babelfish(map)
  8. Win10 解决端口占用问题
  9. [CTF]RAR加密原理
  10. 关于 AI 的数百个问题,清华男神刘云浩教授的 3 万字回复给整得明明白白|附抽奖送书...
  11. linux 更改文件格式
  12. office2010 错误1706 解决办法
  13. 关闭 电脑 ctrl +alt +方向键 旋转屏幕快捷键
  14. 无刷直流电机构成及工作原理详解
  15. 稳态误差,超调与PID的关系
  16. Excel中如何对多个sheet进行同样的操作
  17. 我喜欢的一篇关于家庭教育的文章
  18. MATLAB演奏音乐
  19. Sentinel-1A卫星数据下载
  20. java熔断器_详解spring cloud分布式关于熔断器

热门文章

  1. java 无理数_设 ,那么无理数集可以表达为_Java程序设计答案_学小易找答案
  2. java 文件格式解析JSON数据(其二)
  3. 读取数据 python
  4. SpringBoot获取企业微信token
  5. 指针的大小--sizeof问题和sizeof使用规则
  6. 高薪程序员面试题精讲系列60之进程与线程的区别有哪些?
  7. python tushare日线行情、每日指标、财务指标数据合并
  8. 求助!编写 sql 语句,输出符合条件的查询结果。
  9. Day2补充:钢管切割问题
  10. python主页_主页 - Python 宽客之道