微信公众平台授权登录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/loy_184548/article/details/81210378

微信公众平台授权登录

一. 基本配置

1.注册

认证服务号才拥有登陆授权权限

a. 获取公众平台

微信公众平台,获取公众账号,进入微信公众平台测试账号,获得appID和appsecret

微信公众平台测试账号

b. 配置IP白名单(正式)

在IP白名单内的IP地址作为来源,获取access_token接口才可调用成功

2.配置回调函数

修改:配置回掉页面,注意此处填写的URL无http(沙盒号回调地址支持域名和ip,正式公众号回调地址只支持域名)

例如:666.666.66.66

二. JAVA层

public static final String APPID="此处填写之前获得的appID";
public static final String APPSECRET="此处填写之前获得的APPSECRET";
public static final String REDIRECT_URI = "http://666.666.66.66";   // 注意此处需要http
public static final String SCOPE = "snsapi_base";  // 应用授权作用域
public static final String STATE = "titan";   // 随便填写
public void testWeChat() 

    // 1. 请求CODE
    String url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + APPID+
            "&redirect_uri=" + URLEncoder.encode(REDIRECT_URI,"UTF-8")+
            "&response_type=code" +
            "&scope=snsapi_userinfo" +
            "&state=STATE#wechat_redirect";
    System.out.println(url);
    // 确认授权后返回 code=061wMVmE0NOpcd2U1LjE0DibnE0wMVm8&state=STATE
    String CODE = "061wMVmE0NOpcd2U1LjE0DibnE0wMVm8";

    // 2. 通过CODE拿access_token, 注意CODE只能用一次
    url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + APPID
                    + "&secret="+ SECRET + "&code="+ CODE + "&grant_type=authorization_code";
    JSONObject jsonObject = getJson(url);
    System.out.println(jsonObject);
    /* 返回结果:{"access_token":"12_JIUUdxTw1m0ZzXZaYu...",
    "refresh_token":"12_rYqLCcT9b3aZ2NITfNV9Kb7...","openid":"o1Z3X1ajhIofppj...",
    "scope":"snsapi_userinfo","expires_in":7200}*/
    String access_token = "12_JIUUdxTw1m0...";
    String refresh_token = "12_rYqLCcT9b3aZ2N...";
    String openid = "o1Z3X1ajhIofppjRaNAcp...";

    // 3. 通过openid拿unionid - 需要绑定微信开发平台

}

public JSONObject getJson(String url) throws IOException {
    CloseableHttpClient httpClient = HttpClients.createDefault();
    // 创建一个 GET 请求
    HttpGet httpGet = new HttpGet(url);
    // 执行请求
    CloseableHttpResponse response = httpClient.execute(httpGet);
    //取响应的结果
    String content = EntityUtils.toString(response.getEntity(), "UTF-8");
    JSONObject jsonObject = JSONObject.parseObject(content);

    return jsonObject;
}

猜你喜欢

转载自blog.csdn.net/loy_184548/article/details/81210378
今日推荐