how2j.cn

下载区
文件名 文件大小
hutool-all-4.3.1.jar 1m
步骤 1 : 处理返回   
步骤 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公众号,关注后实时获知最新的教程和优惠活动,谢谢。


提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 第三方开发-微信登录-处理返回 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 982790551
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图