微信第三方登录,新手一定要看微信第三方步骤:
首先要让微信第三方登录注册APP,注册公司。 也可以在淘宝上买
准备:在微信开发平台上,创建网站并应用appId值、appsecret值、回调域名
回调域
**
有两种方法可以获取代码值。 有两种方法可以让用户扫描代码并直接在链接二维码中使用a标记。 在此,您需要输入三个值
1 appId
2. redirect_uri创建开发平台APP应用程序的回调域名** )注意: Wechat缺省为http或https redirect_uri错误将被报告,且这里可不设置端口号。 例如,如下形式
3. state
` https://open.weixin.QQ.com/connect/QR connect? appid=appid redirect _ uri=http://www.Baidu.com/wxloginresponse _ type=code scope=snsapi _ loginstate=ste # wate # wate #
` https://open.weixin.QQ.com/connect/QR connect? appid=appidredirect_uri=回调域地址response _ type=code scope=snsapi _ loginstate=state # we chat _ redirect
1 .添加配置类
package cn.xcn.demo.until; importorg.Apache.http.http entity; importorg.Apache.http.client.methods.closeablehttpresponse; importorg.Apache.http.client.methods.http get; importorg.Apache.http.impl.client.closeablehttpclient; importorg.Apache.http.impl.client.http clients; importorg.Apache.http.util.entity utils; 公共静态字符串获取string uri ) closeablehttpclienthttpclient=http clients.create default http closeablehttpresponseresponse=null; try { response=http client.execute get ); int status code=response.get statusline ).getStatusCode ); 状态代码==200 httpentityentity=response.get entity ); string result=entity utils.tostring entity,’ UTF-8 ‘ ); 返回结果; }else { return null; }catchexceptione ) { e.printStackTrace ); }返回空值; }2.引入依赖关系
ependencygroupidorg.Apache.http components/groupidartifactidhttpclient/artifactidversion4.5.5.7/version/dependentent蚂蚁的json变换工具dependencygroupidcom.Alibaba/groupidartifactidfastjson/artifactidversiongt
;1.2.4</version> </dependency> 获取url链接 //获取token和openid请求路径,需更改其APPID和密钥,其他的代码中动态修改 public String GETTOKEN = “” + “https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=应用密钥&code=CODE&grant_type=authorization_code”;//用户信息请求路径 public String USERINFO = “” + “https://api.weixin.qq.com/sns/userinfo?access_token=TOKEN&openid=OPENID” 最后处理请求的代码
第一种:
public ModelAndView callBackString code, String state){ //回调获得code,通过用户授权的code去获取微信令牌 String token = HttpClientUtil.getGETTOKEN.replaceAll”CODE”, code)); Map map = JSON.parseObjecttoken);//这里也可以不用map处理token //获取到了关键的令牌和openid后, //就可以正式开始查询微信用户的信息,完成我们要做的微信绑定 String access_token = String) map.get”access_token”); String openid = String) map.get”openid”); String userInfo = HttpClientUtil.getUSERINFO.replaceAll”TOKEN”, access_token).replaceAll”OPENID”, openid)); Map info = JSON.parseObjectuserInfo); //返回一个登录成功后的页面,携带微信用户信息 System.out.printlnuserInfo); return new ModelAndView”weichat”,”userInfo”,info); }
第二种:
public Object callBackHttpServletRequest request, HttpServletResponse response){ // 微信官方发给我们一个临时凭证 System.out.println”111″); String code = request.getParameter”code”); System.out.printlncode); // 通过code,去微信官方申请一个正式的token令牌 String getTokenByCodeUrl = “https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=应用秘钥&code=”+code+”&grant_type=authorization_code”; String tokenString = HttpClientUtil.doGetgetTokenByCodeUrl); System.out.printlntokenString); // 将json格式的token字符串转换成实体对象,方便存和取 Token token = JSON.parseObjecttokenString, Token.class); // 通过token。去微信官方获取用户的信息 String getUserByTokenUrl = “https://api.weixin.qq.com/sns/userinfo?access_token=”+token.getAccess_token)+”&openid=”+token.getOpenid); String userInfoString = HttpClientUtil.doGetgetUserByTokenUrl); System.out.printlnuserInfoString); // 将json格式的user字符串转换成实体对象,方便存取 WxUserInfo wxUserInfo = JSON.parseObjectuserInfoString, WxUserInfo.class);//我们有对象的实体 System.out.println”微信昵称:”+wxUserInfo.getNickname)); System.out.println”微信头像:”+wxUserInfo.getHeadimgurl)); // 上面代码只是获取到了微信用户信息 后需须添加自己项目登录的流程 /** * 登录流程 */ return wxUserInfo;
微信实体类:
package com.xc.smallrookie.web.login.domain;import lombok.Data;/** * 令牌实体类 */@Datapublic class Token { private String access_token;//接口调用凭证 private String expires_in;//access_token接口调用凭证超时时间,单位(秒) private String refresh_token;//用户刷新access_token private String openid;//授权用户唯一标识 private String scope;//用户授权的作用域,使用逗号(,)分隔 private String unionid;//当且仅当该网站应用已获得该用户的userinfo授权时,才会出现该字段。 public Token) { } public String getAccess_token) { return access_token; } // get set}
最后前端处理的话,就用Thymeleaf来处理返回的数据
如果你要是想得到用户的信息的话,要有外网进行访问
这里我建议大家可以下载个花生壳来进行外网访问,可以下面评论,或者私信我都可以的,我大概是参考这位大哥的