0x00 前端注册部分
先看逻辑后上代码
- 菜单点击事件相应地址为:http://xx.com/wx_banding
- 注册openid部分本来先用ajax、vue、node.js来完成,但是做不了,最后还是最基础的servlet了。XD
- 请设置自己的appid、密钥和跳转地址,自行下载fastjson-1.1.24.jar
- servlet+java+jsp 高度可用
servlet wx_banding
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet(name = "/wx_banding")
public class Jumping extends HttpServlet{
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.sendRedirect("https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=url&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect");
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException {
}
}
oauth.jsp
<body>
<%
String code = null;
try {
code = request.getParameter("code");
} catch (Exception e) {
response.sendRedirect("http://url/wx_banding");
}
%>
<%--<%=code%>--%>
<script type="text/javascript">
window.location.href = "oauthLoading?code=<%=code%>"
</script>
</body>
servlet oauthLoading
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.net.*;
import com.alibaba.fastjson.*;
import static com.alibaba.fastjson.JSON.parseObject;
@WebServlet(name = "/oauthLoading")
public class Loading extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
MalformedURLException, IOException {
String code = request.getParameter("code");
StringBuilder json = new StringBuilder();
String url = null;
BufferedReader in = null;
String inputLine = null;
String json1 = null;
//这里的appid与secret换成你自己的secret
url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=sss&code="
+ code + "&grant_type=authorization_code";
in = new BufferedReader(new InputStreamReader(new URL(url)
.openConnection().getInputStream(), "utf-8"));
while ((inputLine = in.readLine()) != null) {
json.append(inputLine);
}
in.close();
switch (json1 = json.toString()) {
}
JSONObject jobject = JSONObject.parseObject(json1);
json = new StringBuilder();
url = "https://api.weixin.qq.com/sns/userinfo?access_token="
+ jobject.getString("access_token") + "&openid="
+ jobject.getString("openid");
in = new BufferedReader(new InputStreamReader(new URL(url)
.openConnection().getInputStream(), "utf-8"));
inputLine = null;
while ((inputLine = in.readLine()) != null) {
json.append(inputLine);
}
in.close();
json1 = json.toString();
jobject = parseObject(json1);
request.setAttribute("jobject", jobject);
// String openid = jobject.getString("openid");
try {
request.getRequestDispatcher("index.jsp").forward(request,
response);
} catch (IOException e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException {
}
}
index.jsp(openid存到存到session中)
<%
JSONObject jobject=(JSONObject)request.getAttribute("jobject");
String openid = jobject.getString("openid");
session.setAttribute("openid",openid);
%>