第一步
首先你要去到微信开放平台申为你的应用申请一个oppenID和秘钥。微信开放平台
第二步
查看微信登录的一个流程
1.第三方发起微信授权登录请求后,微信用户允许授权第三方应用后,微信会拉起应用或者重定向到第三方网站,并且带上临时授权票据code参数。
2. 通过 code 参数加上 AppID 和 AppSecret 等,通过 API 换取 access_token;
3. 通过 access_token 进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
详情请看微信文档:微信登录开发文档
第三步:代码实现
首先你要引入alibaba的FastJson和Http的client,可以去Maven仓库下载
<!-- httpClient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.8</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
显示出二维码给用户扫码
1.`可以通过在PC端打开以下链接: https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“该链接无法访问”,请检查参数是否填写错误,如redirect_uri的域名与审核时填写的授权域名不一致或scope不为snsapi_login
用户允许授权后,将会重定向到redirect_uri的网址上,并且带上code和state参数
2.内嵌式`:var obj = new WxLogin({
id: "wxLogin",
appid: "你申请到的appid",
scope: "snsapi_login",
redirect_uri: "你的回调地址,记得加上http://",
href:"你的样式"
因为内嵌式中微信开发文档中需要引入很多东西,我们只需要引用一下就可以
引入wxlogin.js
<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
在href中写上
href: "data:text/css;base64,LmltcG93ZXJCb3ggLnFyY29kZSB7d2lkdGg6IDIwMHB4O30NCi5pbXBvd2VyQm94IC50aXRsZSB7ZGlzcGxheTogbm9uZTt9DQouaW1wb3dlckJveCAuaW5mbyB7d2lkdGg6IDIwMHB4O30NCi5zdGF0dXNfaWNvbiB7ZGlzcGxheTogbm9uZX0NCi5pbXBvd2VyQm94IC5zdGF0dXMge3RleHQtYWxpZ246IGNlbnRlcjt9"
内嵌式就可以使用了。
这里小编踩进了一个巨大的坑,就是你appid、回调域都填写对了,它还是显示如下界面:
1.你可以在hosts文件下配置你的授权回调名
2.将你的Tomcat断开改为80默认端口,然后你可以看下图,具体原因小编还在寻找当中
后面的你可以参照微信开发文档一步步操作了。然后还有一个解析微信url的一个方法。
private JSONObject getInfo(String url) {
try {
CloseableHttpClient client = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(url);
HttpResponse response = client.execute(httpGet);
HttpEntity entity = response.getEntity();
if (entity != null) {
String result = EntityUtils.toString(entity, Charset.forName("UTF8"));
return JSONObject.parseObject(result);
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}