微信网页授权获取openid servlet+jsp

1 篇文章 0 订阅

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);
%>

转自自己的博客,宣传一波 http://zhangzexin.site/2018/09/19/微信推送/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值