SpringBoot 微信第三方登陆详解
:第一步这篇文章只讲三方登陆主要实现步骤,不讲理论这是详细理论拿到微信拉取二维码的接口地址建一个网页设一个跳转a标签接口地址https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=ST
:第一步
这篇文章只讲三方登陆主要实现步骤,不讲理论
这是详细理论
拿到微信拉取二维码的接口地址
建一个网页 设一个跳转a标签
接口地址
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
开发平台 创建完成后,获取到appid和appsecret,配置好回调域名。
回调地址就能拿到code
callback.html 发送数据到后台 使用的vue框架
/** js动态获取?后面的参数,并且封装成一个json对象
* @returns {Object}*/
function getParam(){
var url=location.search;
var param = new Object();
if(url.indexOf("?")!=-1){
var str = url.substr(1)
strs = str.split("&");
for(var i=0;i<strs.length;i++){
param[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
}
}
return param;
}
:第二步
后台获取到code 此时就要获取 access_token 和openid 下面是接口地址
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
替换掉 APPID SECRET CODE
使用java发送get请求 这能要使用工具类 直接复制拿过去用
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import java.io.IOException;
public class HttpClientUtils {
/**
* 发送get请求
* @param url 请求地址
* @return 返回内容 json
*/
public static String httpGet(String url){
// 1 创建发起请求客户端
try {
HttpClient client = new HttpClient();
// 2 创建要发起请求-tet
GetMethod getMethod = new GetMethod(url);
// getMethod.addRequestHeader("Content-Type",
// "application/x-www-form-urlencoded;charset=UTF-8");
getMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"utf8");
// 3 通过客户端传入请求就可以发起请求,获取响应对象
client.executeMethod(getMethod);
// 4 提取响应json字符串返回
String result = new String(getMethod.getResponseBodyAsString().getBytes("utf8"));
return result;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
发送get请求后返回一个json 字符串对象 为了方便取值 转成json对象
JSONObject jsonObject = JSON.parseObject(httpGet);
<!--处理json-->
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
//前端描码拿到code
String code = map.get("code");
//准备发送get请求 获取openid 替换接口网址里面的字段
String url = WxConstants.GET_ACK_URL.replace("APPID", WxConstants.APPID)
.replace("SECRET", WxConstants.SECRET).replace("CODE", code);
//发送get请求 返回access_token 拿到openid和unionid
String httpGet = HttpClientUtils.httpGet(url);
//json字符串转换成json对象
JSONObject jsonObject = JSON.parseObject(httpGet);
//从json对象中获取openid和access_token
String openid = jsonObject.getString("openid");
String access_token = jsonObject.getString("access_token");
:第三步
有了access_token 和openid 就可以获取到微信个人信息了
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
替换access_token 和openid
发送get请求 重复上一步操作 获得返回json字符串对象 转换成对象 取值
直接就保存到数据库
openid 每个微信用户是唯一的标识
更多推荐
所有评论(0)