一.前言

为什么需要OAuth2.0网页授权接口,主要是为了获取微信用户的基本信息(比如用户绑定,用户统计等等)

特别注意:只有认证的服务号有此接口权限

那么订阅号如何实现这个功能呢?可以通过另一个服务号来使用这个接口获取用户基本信息,因为对于未关注此服务号的用户,这个接口同样能够获取到用户基本信息。

二.前期准备

1.我的开发环境与工具说明

开发机器:一台Mac Book Pro

开发工具:

MyElipse

Paste_Image.png

系统环境:OS X EI Capitan 版本 10.11.5

微信web开发者工具

Paste_Image.png

注册一个微信公众号(订阅号或者服务号)

Paste_Image.png

Paste_Image.png

Paste_Image.png

注册一个新浪SAE帐号(用来部署JAVA服务)

三.实现过程

流程解析图

Paste_Image.png

1.check代码,并部署到新浪SAE

源码地址:https://github.com/andli0626/wx_auth_by_java

通过myelipsecheck源码,并输入自己测试微信号的appID,appsecret

Paste_Image.png

导出war包

Paste_Image.png

Paste_Image.png

部署到新浪SAE

Paste_Image.png

Paste_Image.png

上次war包

Paste_Image.png

Paste_Image.png

核心代码

public class OAuthServlet extends HttpServlet {

private static final long serialVersionUID = -1847238807216447030L;

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("gb2312");

response.setCharacterEncoding("gb2312");

// 用户同意授权后,能获取到code

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

// 用户同意授权

if (!"authdeny".equals(code)) {

String APPID = "";

String SECRET = "";

// 获取网页授权access_token

WeixinOauth2Token weixinOauth2Token = AdvancedUtil.getOauth2AccessToken(APPID, SECRET, code);

// 网页授权接口访问凭证

String accessToken = weixinOauth2Token.getAccessToken();

// 用户标识

String openId = weixinOauth2Token.getOpenId();

// 获取用户信息

SNSUserInfo snsUserInfo = AdvancedUtil.getSNSUserInfo(accessToken, openId);

// 设置要传递的参数

request.setAttribute("snsUserInfo", snsUserInfo);

}

// 跳转到index.jsp

request.getRequestDispatcher("index.jsp").forward(request, response);

}

}

web.xml配置

oauthServlet

org.liufeng.course.servlet.OAuthServlet

oauthServlet

/oauthServlet

index.jsp

2.配置授权回调域名

Paste_Image.png

Paste_Image.png

新浪SAE已经提供了测试的域名,还是很方便的

Paste_Image.png

必须配置,如果配置不正确,会导致以下错误

Paste_Image.png

3.构造网页授权链接

Paste_Image.png

主要是3个参数:

appid

redirect_uri 授权后重定向的回调链接地址

scope 应用授权作用域

snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid)

snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。

我的新浪SAE重定向页面是:

https://wxauth.applinzi.com/authServlet

那么网页授权链接为

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8015b2139267655d&redirect_uri=https://wxauth.applinzi.com/oauthServlet&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect

4.测试方法

第一种:通过微信测试帐号

Paste_Image.png

通过pc端的微信客户端,直接把网页授权链接发送到手机端

Paste_Image.png

Paste_Image.png

第二种:通过微信web开发者工具

直接将网页授权链接拷贝到地址栏,访问即可

Paste_Image.png

Paste_Image.png

常见错误说明

Paste_Image.png

应该是没有接口权限,需要进行开发者认证

Paste_Image.png

参考资料

《微信公众平台应用开发方法,技巧与案例》

微信公众平台官方指南

https://mp.weixin.qq.com/wiki

微信用户绑定java实例_OAuth2.0微信网页授权获取用户信息实现全过程(JAVA版本)...相关推荐

  1. 微信接口开发之高级篇系列【网页授权获取用户基本信息】

    PHP微信接口开发之高级篇之网页授权获取用户基本信息 二.WEB开发工具 转载于:https://www.cnblogs.com/tinywan/p/5860981.html

  2. 微信第三方开平台代公众号发起网页授权 获取用户信息 openid,uninoid

    开发过程中, 走了不少弯路,简单记下几个点以备用 首先当然微信文档还是要先仔细过一遍的. 文档链接: 点击打开链接 写在前面:第三方平台代公众号办业务之前,公众号应该已经授权给第三方平台权限了,此时应 ...

  3. Java微信公众号开发之网页授权获取用户基本信息

    本篇博客讲解的网页授权只需要前端传递一个backUrl(回调地址) 到后台接口,后台接口会完成整个授权流程,无需前端做更多工作: 一. 前言 微信公众号开发,需要用到网页授权获取用户信息,通过OAut ...

  4. 第八篇 :微信公众平台开发实战Java版之如何网页授权获取用户基本信息

    第一部分:微信授权获取基本信息的介绍 我们首先来看看官方的文档怎么说: 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域 ...

  5. Spring Boot 微信-网页授权获取用户信息

    微信-验证服务器有效性 微信-网页授权获取用户信息 网页授权获取用户信息步骤 第一步:用户同意授权,获取code 第二步:通过code换取网页授权access_token 第三步:拉取用户信息(需sc ...

  6. asp.net mvc C# 微信公众号-服务号开发 (用户网页授权获取用户昵称头像信息)...

    参考文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432 一.安装Senparc.Weixin NuGet包 ...

  7. 微信开发 网页授权获取用户基本信息

    微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一. ...

  8. 微信公众号开发系列-网页授权获取用户基本信息

    OAuth2.0网页授权这个也是在做微信公众平台用到最多的,可以利用授权接口对自己平台内用户进行绑定,实现用户扫描码和微信分享.微信签到.微信商城购物等: 1.高级接口OAuth2.0网页授权设置 a ...

  9. 微信公众号开发之微信网页授权获取用户个人信息

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 一丶概述 微信网页授权 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑 ...

最新文章

  1. HDLBits 系列(3)Priority Encoder(Case/Casez)
  2. scratch学习_学习scratch编程能学到什么?对孩子有帮助吗?
  3. win10 uwp 毛玻璃
  4. EXCEL如何验证重复数据?
  5. Windows Server 2008之三设置TCP/IP
  6. C语言用warshall算法求传递闭包transitive closure(附完整源码)
  7. nrm:安装与配置记录
  8. Android 内部存储安装apk文件实现
  9. 卡尔曼滤波和粒子滤波最直白的解释
  10. 从B站源码泄露事件入手,说一下团队协作中版本管理的安全意识
  11. MTK6589平板上launcher的一些小修改
  12. SXF2019子串模糊匹配
  13. FPGA-09FPGA-RGB TFT-LCD显示
  14. 隐私计算在普惠金融领域的应用研究
  15. IBM TSM 6.3学习笔记(1)
  16. 拥有WiFi 6+的华为路由 AX 3 Pro 到底香不香
  17. 倍投技巧 - 凯利公式教你如何用正确的方法投资
  18. 计算机毕业设计JavaVue.js音乐播放器设计与实现(源码+系统+mysql数据库+lw文档)
  19. Selenium库实现推特爬虫
  20. 将数字金额转换为中文大写金额

热门文章

  1. 伟创力助力百度全球首个自动驾驶计算平台ACU量产下线
  2. 智能扫描文件免费版隐私政策
  3. linux服务器添加双路由,Linux服务器双网卡双IP刷路由
  4. [iOS]移除苹果开发者账号上无用测试设备
  5. 入坑路面病害检测需了解相关内容之--路面病害数据
  6. 695. 岛屿的最大面积 中等
  7. Golang地图的一些见解
  8. 江西省计算机专业好的二本大学排名,江西最牛二本-江西省十所名牌大学(附排名及录取分数线)...
  9. occ+vtk显示igs模型
  10. STEAM课程的五大教学策略