这篇文章主要介绍了微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解的相关资料,需要的朋友可以参考下

微信公众号开发 自定义菜单

请先读完本文再进行配置开发

请先前往微信平台开发者文档阅读“网页授权获取用户基本信息”的接口说明

在微信公众账号开发中,往往有定义一个菜单,然后用户点击该菜单就进入用户个人中心的功能,通常应用于各个公众账号中的会员服务。

如何在微信自定义菜单中将用户导航到个人中心页面呢?

首选需要通过用户点击获取用户openid,而通过用户的点击跳转获取用户openid就必须在菜单中动态绑定用户的openid,或者在菜单的跳转URL中填写微信提供的链接,官方给了两个链接类型

一种是Scope为snsapi_base的链接

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect

另一种是Scope为snsapi_userinfo的链接

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

这两种链接的区别如下

应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)

网上很多说法是将链接的url直接作为微信自定义菜单中view类型中的url(在填写是url时需要配置网页授权回调域名和appid),本人试了一下这种做法然而不能成功

{ "type":"view", "name":"会员中心", "url":"https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的appid&redirect_uri=你配置接收微信认证的地址?response_type=code&scope=snsapi_base&state=1#wechat_redirect" },

返回结果是创建菜单失败

创建菜单失败 errcode:{40033} errmsg:{invalid charset. please check your request, if include \uxxxx will create fail! hint: [91..gA0792vr23]}

我试了一下将后面的地址进行urlEncode,还是同样的错误。

后来我想了一个办法

在自定义菜单中填写自己的url,在填写的url中将用户重定向到snsapi_base的url中,然后再在snsapi_base中配置获取用户openid以及用户其他信息,最后跳转到一个页面,也就是通常的会员中心页面。

流程如下

请看代码

{ "type":"view",

"name":"会员中心",

"url":"http://配置的网址/redirect"}

其中通过url将用户跳转到http://配置的网址/redirect

然后在处理方法中调用一次重定向即可

//类上的配置

@Controller

@RequestMapping("/wechat")

public class WeChatController{

@RequestMapping(value = "/redirect", method = RequestMethod.GET)

public String weixinRedirect(HttpServletRequest request, HttpServletResponse response) {

return "redirect:https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的appid&redirect_uri=你的服务器处理地址?response_type=code&scope=snsapi_base&state=1&connect_redirect=1#wechat_redirect";

}

}

服务器会将微信认证 跳转到你的服务器处理地址,也就是上面

redirect_uri=你的服务器处理地址中的地址

这里配置为

你的服务器地址/oauth

代码如下

@RequestMapping(value = "/oauth", method = RequestMethod.GET)

public String weixinOAuth(HttpServletRequest request, HttpServletResponse response, Model model) {

//得到code

String CODE = request.getParameter("code");

String APPID = "你的APPID";

String SECRET = "你的SECRET";

//换取access_token 其中包含了openid

String URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code".replace("APPID", APPID).replace("SECRET", SECRET).replace("CODE", CODE);

//URLConnectionHelper是一个模拟发送http请求的类

String jsonStr = URLConnectionHelper.sendGet(URL);

//System.out.println(jsonStr);

//out.print(jsonStr);

JSONObject jsonObj = new JSONObject(jsonStr);

String openid = jsonObj.get("openid").toString();

//有了用户的opendi就可以的到用户的信息了

//地址为https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

//得到用户信息之后返回到一个页面

model.addAttribute("user", wechatUser);

return "vip/userInfo";

}

效果如下

而且这种方式当用户用其他浏览器打开时,会出错,保证了只能在微信中使用,保障了安全性。而且地址栏不会有其他用户个人信息的暴露。

公众号如何跳转到页面php,图文详解微信公众号开发自定义菜单跳转页面并获取用户信息实例...相关推荐

  1. 微信公众号开发--自定义菜单跳转页面并获取用户信息(续)

    之前写过一篇微信公众号开发–自定义菜单跳转页面并获取用户信息 由于当时是刚学习微信公众号开发当时的思路虽然可行,不过不是最好的,最近也用到了需要获取用户信息的地方,再次整理一下. 流程 注意点 ### ...

  2. 《十四》微信小程序中的常用 API之登录、获取用户信息、支付、提现、跳转小程序、网络请求、弹框、导航、数据缓存、图片、查看文档、音频、拨打电话、剪贴板、滚动、WXML

    微信小程序提供了 wx 这个全局变量,通过这个全局变量可以调用微信小程序的 API. 登录: wx.login():获取登录凭证 code.通过登录凭证 code 进而换取用户登录态信息,包括用户在当 ...

  3. java自定义菜单跳转页面_微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解...

    微信公众号开发 自定义菜单 请先读完本文再进行配置开发 请先前往微信平台开发者文档阅读"网页授权获取用户基本信息"的接口说明 在微信公众账号开发中,往往有定义一个菜单,然后用户点击 ...

  4. 在做vue h5 时因改变手机字体导致页面布局错乱 比如在微信公众号中 放入h5 客户把手机字体或者微信字体调大 导致页面错乱

    认定了 就要好好的珍惜对待,人生不容辜负,你必须要更加努力 .加油 骚年 ** 正文: ** 在做vue h5 时因改变手机字体导致页面布局错乱 比如在微信公众号中 放入h5 客户把手机字体或者微信字 ...

  5. 微信公众号配置自定义菜单跳转小程序,自动回复跳转小程序

    自定义菜单跳转小程序 菜单json中找到自己想加的位置 {"type": "miniprogram", "name": "wxa& ...

  6. java,微信公众号跳转到第三方界面,第三方界面获取用户信息,申请微信公众号测试号

    文章目录 1.先申请微信公众号的测试号 2.配置网页授权相关 3.查看微信官方文档获取用户信息 4.便是编写后端代码了 1.先申请微信公众号的测试号 http://mp.weixin.qq.com/d ...

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

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

  8. 获取页面中超链接数量_微信订阅号自定义菜单添加页面模板使用教程。

    身为一名公众号的小编,你一定见过这样的效果: 或是这样的效果: 上面这两种效果有一个共同的专业名词,叫做微信页面模板.微信页面模板可以帮助用户将数万篇的图文或者是视频整理成一个链接进行分发,不仅让我们 ...

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

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

最新文章

  1. C#反射(Reflection)详解
  2. wireshark从入门到精通(协议排错安全篇)4
  3. linux如何连接移动硬盘
  4. 数独项目--关键代码展示:
  5. 算算奖学金(洛谷P1051题题解,Java语言描述)
  6. ALGO-84 大小写转换
  7. 企业全面运营管理沙盘模拟心得_企业经营沙盘模拟心得总结
  8. 计算机基础视频教程B站版
  9. 别人口中的“蓉叶云库”
  10. 抽签助手|抽签助手2.8绿色免费版下载
  11. Oracle 行转列的坑
  12. DanmuPlayer插件获取数据库弹幕——ssm弹幕应用
  13. Linux操作系统下的权限设置
  14. 这十个嵌入式工程师最青睐的树莓派扩展板让你受用半生
  15. 如何在vue项目中引入video.js插件
  16. STM32单片机接直流减速电机编码器注意点
  17. 【区块链基础】4——ETH区块结构
  18. Certbot nginx证书 or not Let‘s Encrypt
  19. Unity2D平台开发
  20. 计算机硬件的联通,联通4g支撑系统介绍_计算机硬件及收集_it计算机_专业资料[精彩].ppt...

热门文章

  1. SpringData JPA 日常使用
  2. 分布式文件系统:HDFS 核心原理
  3. panda读取中文xlsx文件问题
  4. PFA树脂的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  5. android10 保存图片到系统相册,刷新媒体库
  6. Windows7旗舰版安装Pytorch(CPU版)
  7. EAS中F7控件监听变化后,手动修改带出值无效
  8. 【Python学习】Day-011 Day-012 元组、字符串、字符编码、字符串相关方法、字符串格式化
  9. 我在北上深杭,挺好的
  10. java 代码封装_封装 java代码