开发文档
文档地址
在写代码时,我是在公众号的按钮地址设置为是请求code的网址,所以在下述代码并没有文档请求code的部分,只有接收该网址发送的code的部分。
网页授权函数:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Get");
String code = request.getParameter("code");
System.out.println(code);
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
url = url.replace("APPID","自己的APPID").replace("SECRET","自己的SECRET").replace("CODE",code);
String result = Util.get(url);
String at = JSONObject.parseObject(result).getString("access_token");
String openid = JSONObject.parseObject(result).getString("openid");
System.out.println("openid:"+openid);
url="https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";
url = url.replace("ACCESS_TOKEN",at).replace("OPENID",openid);
result = Util.get(url);
System.out.println(result);
StringBuilder sb = new StringBuilder();
sb.append('{');
sb.append("\"openid\"").append(":\"").append(openid+"\"");
sb.append('}');
PrintWriter out = response.getWriter();
out.print(sb.toString());
out.flush();
out.close();
}
Url类的get函数:
public static String get(String Url) {
try {
URL urlobj = new URL(Url);
URLConnection conn = urlobj.openConnection();
InputStream is = conn.getInputStream();
byte[] b = new byte[1024];
int len;
StringBuilder sb = new StringBuilder();
while((len=is.read(b))!=-1) {
sb.append(new String(b,0,len));
}
return sb.toString();
}catch(Exception e) {
e.printStackTrace();
}
return null;
}