Java微信公众号开发:网页授权获取用户基本信息

自定义菜单事件分为十种,其中最常用的有CLICK和VIEW,定义VIEW类型的菜单时要求定义要访问的URL。在这个URL中是无法直接获取用户的基本信息的,假如想要在这个URL中获取用户的基本信息就必须通过访问网页授权接口来获取用户的基本信息。

使用微信网页授权首先要在微信后台指定授权路径:“接口权限--网页授权获取用户基本信息”;在这儿指定的授权路径必须是域名,而不能是IP地址。指定完授权域名之后,便可以在指定的域名下获取微信用户的信息。


网页授权分为两种:snsapi_base和snsapi_userinfo,snsapi_base类型的网页授权只是获取用户的OPENID,无需用户同意,可直接进行获取。snsapi_userinfo获取的是用户的基本信息,这种方式需要用户同意之后才可以进行获取,使用方式差别不大,下面以第一种方式为例。


1、在创建自定义菜单时指定URL为网页授权接口:
例如:String URL="https://open.weixin.qq.com/connect/oauth2/authorize? appid=wx3e4a89adbc62b1e9&redirect_uri=http://www.xxx.com/wechat/event/myPreReg.html&response_type=code&scope=snsapi_base&state=s";
     appid:是微信公众号的唯一标识,在微信公众号的后台可以 进行查看
     redirect_uri:指的是要访问的路径,www.xxx.com必须是在你的微信服务器后台授权的域名
     response_type:的值是固定的就是code
     scope:指定网页授权的类型,就是上面两种
     state:扩展的参数,随意


      在访问以上的网页授权接口之后将会跳转到“redirect_uri=http://www.xxx.com/wechat/event/myPreReg.html&code=codeVal&scope=snsapi_base&state=随意”
     在访问这个路径的时候呢微信服务器发送过来了两个参数,一个是CODE()一个是state
     state的作用是由你自己确定,那么CODE的作用则是用来获取用户的openID


2、使用CODE值获取用户的OPENID
public static String getOpenId(String code){
String url="https://api.weixin.qq.com/sns/oauth2/access_token?   appid=wx3e4as9adbc62b1e9&secret=1cafcbae8abed3fb3ba31394509c12c9&code="+code+"&grant_type=authorization_code";
String openId="";
try {
URL getUrl=new URL(url);
HttpURLConnection http=(HttpURLConnection)getUrl.openConnection();
http.setRequestMethod("GET"); 
http.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
http.setDoOutput(true);
http.setDoInput(true);


http.connect();
InputStream is = http.getInputStream(); 
int size = is.available(); 
byte[] b = new byte[size];
is.read(b);


String message = new String(b, "UTF-8");

JSONObject json = JSONObject.fromObject(message);
openId = json.getString("openid");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return openId;
}


使用网页授权获取用户OPENID或者是用户的基本信息方式都是基本一样的,这应该是微信公众号开发过程中最简单的了。













你可能感兴趣的:(微信公众号开发)