1. 程式人生 > >微信公眾號獲取使用者資訊-網頁授權

微信公眾號獲取使用者資訊-網頁授權

網頁授權資訊獲取分為兩種
SNSAPI_BASE("snsapi_base", "基本資訊"),
SNSAPI_USERINFO("snsapi_userinfo", "詳細資訊");

,基本資訊snsapi_base只能獲取openid,詳細資訊snsapi_userinfo需要使用者主動授權,可以獲取使用者暱稱,地址等資訊; 準備工作:(微信公眾號配置)

分別配置上專案的域名,微信會根據配置的域名回撥訪問;注意不能加埠等,所以專案必須可以無埠訪問; 介面訪問分為三步: 1.獲取授權code
public static String getWeChatCode(String backUri, 
GdWechatScopeTypeEnum scope) throws UnsupportedEncodingException { backUri = URLEncoder.encode(backUri, "UTF-8"); String url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + GdWechatConfig.appid + "&redirect_uri=" + backUri + "&response_type=code&scope=" + scope.getTypeCode() + "&state=123#wechat_redirect"
; return url; }
2.用code換取access_token,同時可以獲取到openid
public static Map<Object, Object> getOpenIdAndTokenByCodeWechat(String code) {
    //微信
String URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + GdWechatConfig.appid
+ "&secret=" + GdWechatConfig.secret + "&code=" + code + "&grant_type=authorization_code"
; if (StringUtils.isNotEmpty(code)) { String resultStr = GDHttpClient.get(URL); if (StringUtils.isNotEmpty(resultStr)) { Map<Object, Object> map = GdJsonMapper.readStringValueToMap(resultStr); return map; } } return null; }
3.用access_token和openid獲取到使用者基本資訊
public static Map<Object, Object> getUserInfoWechat(String openId, String token) throws Exception {
    String userinfourl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + token + "&openid=" + openId + "&lang=zh_CN";
String resultStr = GDHttpClient.get(userinfourl);
    if (StringUtils.isNotEmpty(resultStr)) {
        return (Map<Object, Object>) GdJsonMapper.readStringValueToMap(resultStr);
}
    return null;
}

注:程式碼中用到一些工具類如http,json可以用自己的 程式碼在github上:https://github.com/zgdcool/wechat  後期會持續更新,有興趣的可以一起完善!