Java对接微信登录
2020-03-04 16:04:13来源:博客园 阅读 ()
Java对接微信登录
今天我们来对接微信开放平台的网站应用登录
首先上文档链接:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html
1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;
3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
文档上说的也很明白
首先我们需要注册一个开放平台的账号
但是吧很不爽的是需要企业认证花300RMB进行资质认证。
ok,我们先来创建一个网站应用
就是这样进行填写就行了
填写完,状态为通过就可以开始微信登录的开发了。
然后我们需要知道三个信息
ok,配置信息完成了
让我们继续来看微信开放平台的文档
第一步:请求code
这边请求需要带上相应的参数
redirect_uri是回调地址uri刚才配置的授权回调域填上并加上接口 or html,这个可以根据自己的业务来,这里我是填上接口
这个urlEnCode处理,网上有很多在线工具:https://tool.chinaz.com/tools/urlencode.aspx
然后根据微信开发文档填写对应的信息
https://open.weixin.qq.com/connect/qrconnect?
appid=xxxxxxxxx&redirect_uri=https%3a%2f%2fwww.baidu.com%2frequestWechatLogin&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect
上面信息是我随便填写的,开发时请根据自己的微信开放平台配置填写
ok,完成后打开此链接就会进入到该页面,就可以开始登录了。
使用手机端微信扫描,
注意:每次每个用户授权后都会得到一个一次性的code,这个code只能使用一次 ,下次再授权登录会重新生成code的!!!
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
链接参数根据微信开放平台配置对应填写
因为我这边redirect_uri填写的是一个接口,就需要写一个接口,我就直接上代码了,这里有封装的类和枚举,我就不展示了大家可以修改!!!
1 /** 2 * 请求 code web微信登录 3 * 4 * @param code 请求登录唯一 code 5 * @return 通用返回对象 6 */ 7 @ApiOperation("请求 code 微信登录") 8 @ApiImplicitParam(name = "code", value = "请求登录唯一code", dataType = "String", paramType = "query") 9 @GetMapping("/requestWeChatLogin") 10 public ApiResult requestWeChatLogin(@RequestParam("code") String code) { 11 // 断言为空则抛出异常 12 Assert.notNull(code, "未授权成功"); 13 String appId = "xxxxxxxxx"; 14 String secret = "xxxxxxxxxxxxxxxxxx"; 15 String strUri = StrUtil.format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={}&secret={}&code={}&grant_type=authorization_code", appId, secret, code); 16 // 使用 Hutool开发工具包,执行请求接口,获取相关信息 17 HttpResponse response = HttpRequest.get(strUri).execute(); 18 // 转成JSON对象 19 JSONObject jsonObject = JSONUtil.parseObj(response.body()); 20 // 判断JSON对象中 unionid 是否存在 21 if (jsonObject.isNull("unionid")) { 22 // 不存在返回结果,code无效 23 return new ApiResult(CommonEnum.CODE_INVALID); 24 } 25 // 获取 unionId 26 String unionId = jsonObject.get("unionid").toString(); 27 // 获取 openId 28 String openId = jsonObject.get("openid").toString(); 29 // 获取 accessToken 30 String accessToken= jsonObject.get("access_token").toString(); 31 return new ApiResult(CommonEnum.SUCCESS); 32 }
这样一顿操作后,就可以根据code获取到扫码授权用户的一些信息。
拿到这些信息可以使用 access_token&
openid 来获取用户个人信息 等等。
该保存数据库可以保存,有别的操作自行编写!!!
原文链接:https://www.cnblogs.com/chenghao24/p/12234122.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Java核心技术笔记一
下一篇:5.4 final修饰符
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash