第一步

这篇文章只讲三方登陆主要实现步骤,不讲理论
这是详细理论

拿到微信拉取二维码的接口地址
建一个网页 设一个跳转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 每个微信用户是唯一的标识

Logo

更多推荐