WEB接入第三方微信授权登录

WEB接入第三方微信授权登录


/**
 * getWeChatUserInfo:(获取网页授权凭证). <br/>
 * 
 * @author HuangTianLaing
 * @param appId 公众账号的唯一标识
 * @param appSecret 公众账号的密钥
 * @param code
 * @return WeixinAouth2Token
 */
public  WeChatOauth2Token getOauth2AccessToken(String appId, String appSecret, String code) {
    WeChatOauth2Token wat = null;
    // 拼接请求地址
   /* String requestUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
    requestUrl = requestUrl.replace("APPID", appId);
    requestUrl = requestUrl.replace("SECRET", appSecret);
    requestUrl = requestUrl.replace("CODE", code);*/
    // 获取网页授权凭证
    String  json= HttpKit.get(redirectUri(getAccess_tokenByCode, new Object[] { appId, appSecret, code }));
    JSONObject jsonObject = JSONObject.fromObject(json);
    if (null != jsonObject) {
        try {
            wat = new WeChatOauth2Token();
            wat.setAccessToken(jsonObject.getString("access_token"));
            wat.setExpiresIn(jsonObject.getInt("expires_in"));
            wat.setRefreshToken(jsonObject.getString("refresh_token"));
            wat.setOpenId(jsonObject.getString("openid"));
            wat.setScope(jsonObject.getString("scope"));
        } catch (Exception e) {
            wat = null;
            int errorCode = jsonObject.getInt("errcode");
            String errorMsg = jsonObject.getString("errmsg");
           LogKit.info("第三方:【微信】获取网页授权凭证失败 :errcode:{"+errorCode+"} errmsg:{"+errorMsg+"}");
        }
    }
    return wat;
}

/**
 * getWeChatUserInfo:(通过网页授权获取用户信息). <br/>
 *
 * @author HuangTianLaing
 * @param accessToken       网页授权接口调用凭证
 * @param openId            用户标识
 * @return WeChatUserInfo
 * @since JDK 1.6
 */
@SuppressWarnings( { "deprecation", "unchecked" })
public  ThirdUserInfo getWeChatUserInfo(String accessToken, String openId) {
    ThirdUserInfo userInfo = null;
    // 拼接请求地址
    /* String requestUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID";
    requestUrl = requestUrl.replace("ACCESS_TOKEN", accessToken).replace("OPENID", openId);*/
    // 通过网页授权获取用户信息
    String json = HttpKit.get(redirectUri(getUserInfoByOpenId,new Object[] { accessToken, openId}));
    JSONObject jsonObject=JSONObject.fromObject(json);
    if (null != jsonObject) {
        try {
            userInfo = new ThirdUserInfo();
            // 用户的标识
            userInfo.setOpenId(jsonObject.getString("openid"));
            // 昵称
            userInfo.setNickname(jsonObject.getString("nickname"));
            // 性别(1是男性,2是女性,0是未知)
            userInfo.setSex(jsonObject.getInt("sex"));
            // 用户所在国家
            userInfo.setCountry(jsonObject.getString("country"));
            // 用户所在省份
            userInfo.setProvince(jsonObject.getString("province"));
            // 用户所在城市
            userInfo.setCity(jsonObject.getString("city"));
            // 用户头像
            userInfo.setHeadImgUrl(jsonObject.getString("headimgurl"));
            //唯一认证
            userInfo.setUnionId(jsonObject.getString("unionid"));
        } catch (Exception e) {
            userInfo = null;
            int errorCode = jsonObject.getInt("errcode");
            String errorMsg = jsonObject.getString("errmsg");
            LogKit.info("第三方:【微信】获取用户信息失败 errcode:{"+errorCode+"} errmsg:{"+errorMsg+"}");
        }
    }
    return userInfo;
}

//拼接字符串
public String redirectUri(String url,Object[] obj){
    return url.format(url, obj);
}

 /**
 * Send GET request
 */
public static String get(String url, Map<String, String> queryParas, Map<String, String> headers) {
    HttpURLConnection conn = null;
    try {
        conn = getHttpConnection(buildUrlWithQueryString(url, queryParas), GET, headers);
        conn.connect();
        return readResponseString(conn);
    }
    catch (Exception e) {
        throw new RuntimeException(e);
    }
    finally {
        if (conn != null) {
            conn.disconnect();
        }
    }
}

public static String get(String url, Map<String, String> queryParas) {
    return get(url, queryParas, null);
}

public static String get(String url) {
    return get(url, null, null);
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值