步骤 2 : wx.jsp
一旦微信用户进行了扫码并确认同意后,就会访问回调地址:
http://how2j.cn/wx.jsp 在 wx.jsp 中就会接受到约定好传回来的 授权临时票据 code, 并根据这个进一步获取 用户信息。
现在服务端有多种方式,如 springmvc, struts, springboot 等等,为了方便大家理解,最简单的,还是 jsp 。 因为它里面就是纯粹的 java 代码,不涉及任何框架的内容,所以大家拿去后修改也很简单。
以下就是 wx.jsp 的代码了,每一行都做了注释,大家直接阅读即可,就不在这里做赘述了。 有几点需要注意: 1. app_id 和 app_secret 都需要用自己的,所以我是不能在 代码里提供的。 2. 为了使用方便, 如模拟http 访问和 json 处理, 用到了 hutool 工具包,我在右上角提供了下载。 <%@page import="cn.hutool.http.HttpUtil"%>
<%@page import="cn.hutool.core.util.StrUtil"%>
<%@page import="cn.hutool.json.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
//app_id
//app_secret
String app_id= "<app_id>";
String app_secret= "<app_secret>";
//获取扫描二维码返回的 授权临时票据 code
String code = request.getParameter("code");
//通过 app_id, app_secret 和 code 获取接口调用凭证 access_token 和 授权用户唯一标识 openid
String getAccessTokenURLFormat = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={}&secret={}&code={}&grant_type=authorization_code";
String getAccessTokenURL = StrUtil.format(getAccessTokenURLFormat, app_id,app_secret,code);
//通过 hutool 工具类 访问url
String tokenResponse = HttpUtil.get(getAccessTokenURL);
//通过 hutool 工具类 转换为 json 对象
JSONObject tokenJson= JSONUtil.parseObj(tokenResponse);
//获取json 对象相关字段
Integer errcode = (Integer)tokenJson.get("errcode");
String errmsg = (String)tokenJson.get("errmsg");
String openid = (String)tokenJson.get("openid");
String access_token = (String)tokenJson.get("access_token");
//先判断是否返回错误信息,如果是,则提示错误
if(null!=errcode){
out.println("<br><br>出错,错误信息:"+errmsg);
return;
}
out.println("<br><br><span style='color:green'>登录成功!</span>");
//打印 服务端返回的数据
out.println("<br><br>授权临时票据 code:"+code);
out.println("<br><br> 接口调用凭证 access_token:"+access_token);
out.println("<br><br> 授权用户唯一标识 (这个可以与数据库里已经存在的用户数据进行关联) openid:"+openid);
//通过 接口调用凭证 access_token 和 授权用户唯一标识 openid 就可以获取用户信息了
String getUserInfoURLFormat = "https://api.weixin.qq.com/sns/userinfo?access_token={}&openid={}";
String getUserInfoURL = StrUtil.format(getUserInfoURLFormat,access_token,openid);
//通过hutool 工具类获取用户信息
String userInfoResponse = HttpUtil.get(getUserInfoURL);
//通过 hutool 工具类转换为 json 对象
JSONObject userInfoJson= JSONUtil.parseObj(userInfoResponse);
//通过 hutool 工具获取微信昵称和头像图片地址
String nickname = (String)userInfoJson.get("nickname");
String headimgurl = (String)userInfoJson.get("headimgurl");
out.println("<br><br>微信名称:"+nickname);
out.println("<br><br>微信头像:<img src='"+headimgurl+"'/>");
%>
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|