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

来源:互联网 发布:怎么清除小米云端数据 编辑:程序博客网 时间:2024/05/24 22:43

http://blog.csdn.net/xiangjai/article/details/52804308

功能:主要用于在用户通过手机端微信访问第三方H5页面时获取用户的身份信息(openId,昵称,头像,所在地等。。)可用来实现微信登录、微信账号绑定、用户身份鉴权等功能。

 
 

开发前的准备:

1、需要有一个公众号,拿到AppID和AppSecret;
2、进入公众号开发者中心页配置授权回调域名。具体位置:接口权限-网页服务-网页账号-网页授权获取用户基本信息-修改
     注意,这里仅需填写全域名(如www.qq.com、www.baidu.com),勿加 http:// 等协议头及具体的地址字段; 
     本文以 lovebread.tunnel.qydev.com 域名为例:
3、如果嫌手机上测试麻烦,可以使用微信官方提供的web开发者工具直接在浏览器中进行调试。
    前提是需要在微信公众号中绑定开发者账号:登录公众号-开发者工具-进入web开发者工具-绑定web开发者微信账号
    使用说明及下载地址:https://mp.weixin.qq.com/wiki?action=doc&id=mp1455784140&t=0.7272727088156665&token=&lang=zh_CN#6

微信开发资料收集

https://github.com/liyiorg/weixin-popular

https://github.com/scauwjh/weixinPlatform 
https://github.com/borball/weixin-sdk

本文是基于   https://github.com/borball/weixin-sdk


网页授权获取用户基本信息


     1 第一步:用户同意授权,获取code
[java] view plain copy
print?
  1. @Test  
  2. public void testAuthenticationUrl(){  
  3.     String url = MpOAuth2s.defaultOAuth2s().authenticationUrl("http://wxtest.gzriver.com/oS-I8EwVL9X.view""snsapi_userinfo");  
  4.     System.out.println(url);  
  5.     Assert.assertNotNull(url);  
  6. }  
通过转发形式微信验证页面
[java] view plain copy
print?
  1. @RequestMapping(value = { "/xxx" })  
  2. public ModelAndView testOrder(HttpSession httpSession) {  
  3.     ModelAndView modelView = new ModelAndView();  
  4.       
  5.     String url = MpOAuth2s.defaultOAuth2s().authenticationUrl(StringUtils.generateWechatAuthUrl("xxx"),  
  6.                 "xxx");  
  7.         // 转到微信验证页面  
  8.         return new ModelAndView("redirect:" + url);  
  9.     }  


通过url访问得到code
[java] view plain copy
print?
  1. {  
  2.     state = ,  
  3.     code = 011ARkch0yXcSC1zgUah07uhch0ARkcp  
  4. }  


  • 2 第二步:通过code换取网页授权access_token
  • [java] view plain copy
    print?
    1. AccessToken accessToken = MpOAuth2s.defaultOAuth2s().getAccessToken(code);  

  • 3 第三步:刷新access_token(如果需要)
  • [java] view plain copy
    print?
    1. accessToken = MpOAuth2s.defaultOAuth2s().refreshToken(accessToken.getRefreshToken());  

  • 4 第四步:拉取用户信息(需scope为 snsapi_userinfo)
  • [java] view plain copy
    print?
    1. OpenUser openUser = MpOAuth2s.defaultOAuth2s().userInfo(accessToken.getAccessToken(), accessToken.getOpenId());  
    2.  logger.debug("openUser........................." + openUser.toString());  

  • 5 附:检验授权凭证(access_token)是否有效

https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID
阅读全文
0 0
原创粉丝点击