1、构造LoginService类,作为授权的起始页面,引导用户访问该servlet。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String backUrl="http://"+request.getServerName()+"/SafeCampus/wechat/CallBack"; String AppID="TESTAPPID"; String reurl ="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+AppID \+ "&redirect_uri="+URLEncoder.encode(backUrl) \+ "&response_type=code" \+ "&scope=snsapi_userinfo" \+ "&state=STATE#wechat_redirect"; response.sendRedirect(reurl); }
|
2、如果用户同意授权,将会跳转至定义的回调页面,并附带参数Code。
String code=request.getParameter("code"); String access_token = ""; String line=""; String openid = "";
String AppID="TESTAPPID";
String AppSecret="TESTAPPSECRET";
String reurl ="https://api.weixin.qq.com/sns/oauth2/access\_token?appid="+AppID+"&secret="+AppSecret+"&code="+code+"&grant\_type=authorization_code";
URL url = new URL(reurl);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setRequestMethod("GET"); urlConnection.setUseCaches(false); urlConnection.connect(); BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "utf-8"));
StringBuffer buffer = new StringBuffer();
while ((line = reader.readLine()) != null) { buffer.append(line); }
urlConnection.disconnect();
String result = buffer.toString();
JSONObject resultObject = JSONObject.fromObject(result);
openid = resultObject.getString("openid");
access\_token=resultObject.getString("access\_token");
reurl="https://api.weixin.qq.com/sns/userinfo?access\_token="+access\_token+"&openid="+openid+"&lang=zh_CN"; url = new URL(reurl); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setRequestMethod("GET"); urlConnection.setUseCaches(false); urlConnection.connect(); reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "utf-8")); buffer = new StringBuffer(); line=""; while ((line = reader.readLine()) != null) { buffer.append(line); } urlConnection.disconnect(); result = buffer.toString(); resultObject = JSONObject.fromObject(result);
String nickname = resultObject.getString("nickname");
"nickname": "nickname", "sex": 1, "language": "zh_CN", "city": "city", "province": "province", "country": "中国", "headimgurl": "http://wx.qlogo.cn/mmopen/JcDicrZBlREhnNXZRudod9PmibRkIs5K2f1tUQ7lFjC63pYHaXGxNDgMzjGDEuvzYZbFOqtUXaxSdoZG6iane5ko9H30krIbzGv/0", "subscribe_time": 1386160805
|
文章评论