我是靠谱客的博主 英俊酒窝,最近开发中收集的这篇文章主要介绍微信公众号,菜单扫码重定向获取用户信息,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用微信扫码重定向获取用户信息在转向界面

1.构造二维码

2.扫码获取二维码链接和对应的id(为使二维码易于识别,应将链接缩短,所以以下取名为A

3.重定向获取用户信息

4.转到准确链接获取相应信息

(为了方便),使用了重定向3次,即由a->oauthServlet2->B->A,在获取用户时,可将state作为需要的参数对象

带参数传递的oauthServlet写在链接上。



//扫描方法入口重定向到扫描界面
public ModelAndView a(HttpServletRequest request, HttpServletResponse response) throws Exception {
String url = "trkjgzh.com";
String i = request.getParameter("i");
System.out.println("i-----------------:" + i);
String oauthUrl =
"https://open.weixin.qq.com/connect/oauth2/authorize?appid="
+ SystemConst.appId + "&redirect_uri=http%3A%2F%2F" + url + "%2FoauthServlet2" +
"&response_type=code&scope=snsapi_userinfo&state=" + i + "#wechat_redirect";
return getRedirect(oauthUrl);
}
//扫描方法入口重定向到扫描界面
public ModelAndView B(HttpServletRequest request, HttpServletResponse response) throws Exception {
String i= request.getParameter("i");
String openid = request.getParameter("openId");
return getRedirect("/trans/tower_A.do?i="+i+"&openId="+openid);
}
//扫描从定向和判断系统用户
public ModelAndView A(HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String, Object> model = new HashMap<String, Object>();
String su_id = request.getParameter("su_id");
if (StringUtil.isEmpty(su_id)) {
String openid = request.getParameter("openId");
System.out.println("openid-------------:" + openid);
User user = new User();
if (!StringUtil.isEmpty(openid)) {
user.setKoal_cert_cn(openid);
user.setMode("koal_cert_cn");
User u = userService.query(user); //通过微信公众号查询
if (StringUtil.isEmpty(u)) {
model.put("result", "0");
} else {
String tt_id = request.getParameter("i");
Tower tower = towerService.query(tt_id);
if (!StringUtil.isEmpty(tower)) {
model.put("tower", tower);
Defect defect = new Defect();
defect.setTd_tl_id(tt_id);
defect.setMode("td_tl_id2");
defect.setOrder("create_time desc");
List<Defect> defectList = defectService.list(defect);
if (!StringUtil.isEmpty(defectList)) {
model.put("defectList",defectList);
model.put("dsize", defectList.size());
}
}
model.put("i", tt_id);
model.put("su_id", u.getSu_id());
}
}
} else {
String tt_id = request.getParameter("i");
Tower tower = towerService.query(tt_id);
if (!StringUtil.isEmpty(tower)) {
model.put("tower", tower);
Defect defect = new Defect();
defect.setTd_tl_id(tt_id);
defect.setMode("td_tl_id2");
defect.setOrder("create_time desc");
List<Defect> defectList = defectService.list(defect);
if (!StringUtil.isEmpty(defectList)) {
model.put("defectList",defectList);
model.put("dsize", defectList.size());
}
}
model.put("i", tt_id);
model.put("su_id", su_id);
}
return getView(request, model);
}
重定向链接的servlet:


    <servlet>
        <servlet-name>oauthServlet2</servlet-name>
        <servlet-class>com.dm.core.OauthServlet2</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>oauthServlet2</servlet-name>
        <url-pattern>/oauthServlet2</url-pattern>
    </servlet-mapping>



package com.dm.core;


import com.dm.core.dao.SqlDao;
import com.dm.core.system.SystemConst;
import com.dm.core.util.StringUtil;
import com.dm.core.util.WebUtil;
import com.dm.core.util.WeiXinUtil;
import com.dm.wechat.domain.Baseinfo;
import com.dm.wechat.domain.MenuManage;
import com.dm.wechat.pojo.SnsUserInfo;
import com.dm.wechat.pojo.WeiXinOauth2Token;


import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


/**


 * Created by IntelliJ IDEA.
 * User: Zjm
 * Date: 15-3-3
 * Time: 下午4:58
 * To change this template use File | Settings | File Templates.
 */
public class OauthServlet2 extends HttpServlet {
     private ServletConfig config = null;


    public void init(ServletConfig config) throws ServletException {
        System.out.print("初始化servelt成功");
        this.config = config;
    }
    public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
         //用户同意授权,能获得code
        String code = request.getParameter("code");
        String state = request.getParameter("state");
        String openId="";
         System.out.println("state-----------=:"+state);
          //authdeny表示用户不同意授权
        if(!"authdeny".equals(code)){
            //I:
            //获取网页授权access_token  ?
                 WeiXinOauth2Token weiXinOauth2Token = WeiXinUtil.getOauth2AccessToken(SystemConst.appId,SystemConst.appsecret, code);
                System.out.println("------------");
            //网页授权接口访问凭证
            String accessToken = weiXinOauth2Token.getAccessToken();


            //用户标识
          openId = weiXinOauth2Token.getOpenId();


            System.out.println("用户微信号openId:" + openId);
            //用户信息
            //P:
            request.setAttribute("openId",openId);
            request.setAttribute("w_id",openId);
            request.setAttribute("i",state);
        }
        //O: 参数传递使用链接传递
        request.getRequestDispatcher("/trans/tower_B.do?openId="+openId+"&i="+state).forward(request,response);
    }
}

最后

以上就是英俊酒窝为你收集整理的微信公众号,菜单扫码重定向获取用户信息的全部内容,希望文章能够帮你解决微信公众号,菜单扫码重定向获取用户信息所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部