您的位置:首页 > 移动开发 > 微信开发

微信公众号,菜单扫码重定向获取用户信息

2016-10-11 09:34 295 查看
使用微信扫码重定向获取用户信息在转向界面

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

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐