OAuth2.0微信网页授权获取用户信息实现全过程(JAVA版本)

一.前言

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

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

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

二.前期准备

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

开发机器:一台Mac Book Pro
开发工具:

MyElipse

Paste_Image.png

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

微信web开发者工具

Paste_Image.png

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

https://mp.weixin.qq.com/
主要是用开发者测试帐号测试

Paste_Image.png
Paste_Image.png
Paste_Image.png

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

http://sae.sina.com.cn/

三.实现过程

流程解析图

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配置

  <servlet>
    <servlet-name>oauthServlet</servlet-name>
    <servlet-class>org.liufeng.course.servlet.OAuthServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>oauthServlet</servlet-name>
    <url-pattern>/oauthServlet</url-pattern>
 </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

2.配置授权回调域名

Paste_Image.png
Paste_Image.png

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


Paste_Image.png

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

Paste_Image.png

3.构造网页授权链接

可以参考官方API说明:
http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html#.E7.AC.AC.E4.B8.80.E6.AD.A5.EF.BC.9A.E7.94.A8.E6.88.B7.E5.90.8C.E6.84.8F.E6.8E.88.E6.9D.83.EF.BC.8C.E8.8E.B7.E5.8F.96code

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,932评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,554评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,894评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,442评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,347评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,899评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,325评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,980评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,196评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,163评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,085评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,826评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,389评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,501评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,753评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,171评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,616评论 2 339

推荐阅读更多精彩内容