微信公众号登录

原创 2018年04月15日 16:36:30

1.获取code

需要参数:

参数是否必须说明
grant_type获取access_token填写client_credential
appid第三方用户唯一凭证
secret第三方用户唯一凭证密钥,即appsecret
https请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
    public static String appid = "wx8bff3684a40437c3";//
    public static String secret= "35ead9eb0a774e719c28d8613fe3e676";
    public static String redirect_uri = "http://19c785x145.imwork.net:22158/user/code";

    /**
     * 进入网站前,去微信公众号授权
     *
     * @return
     */
    @RequestMapping(value = "/auth", method = RequestMethod.GET)
    public String auth() {
        //获取code
        String cord_url = "https://open.weixin.qq.com/connect/oauth2/authorize?" +
                "appid=" + appid + "&redirect_uri=" + redirect_uri +
                "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
        return "redirect:" + cord_url;
    }

2.通过code获取access_token

String token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" +
        appid + "&secret=" + secret+ "&code=" + code + "&grant_type=authorization_code";

3.获取

 @RequestMapping(value = "/code", method = RequestMethod.GET)
    public String code(@RequestParam(defaultValue="1") int flag, HttpServletRequest request, String code, String state, HttpSession session, Model model) {

        if (flag==-1){
            model.addAttribute("code","未知错误");
            return "redirect:/user/index";
        }

        //判断返回的数据是否正确
        if(code!=null&&code.length()>0){
            //去获取TOKEN
            String token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" +
                    appid + "&secret=" + appsecret + "&code=" + code + "&grant_type=authorization_code";
            String json = WeiXinUtils.sendGet(token_url);

            //判断返回的数据是否正确
            if (json.indexOf("access_token")!=-1){
                //解析TOKEN
                JSONObject jsonObject = JSONObject.fromObject(json);
                String access_token = jsonObject.get("access_token") + "";
                String openid = jsonObject.get("openid") + "";
                //根据access_token和openid获取用户基本信息
                String userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=" +
                        access_token + "&openid=" + openid + "&lang=zh_CN";
                String result_userinfo = WeiXinUtils.sendGet(userinfo_url);

                //判断返回的数据是否正确
                if (result_userinfo.indexOf("openid")!=-1){
                    //解析微信返回的数据
                    JSONObject userinfo = JSONObject.fromObject(result_userinfo);
                    //将用户信息存入session中
                    User user = new User();
                    user.setUserNickname(userinfo.getString("nickname")); //昵称
                    user.setUserGender(userinfo.getInt("sex"));            //性别
                    user.setUserAvtar(userinfo.getString("headimgurl"));    //用户头像
                    user.setOpenId(userinfo.getString("openid"));           //openid
                    session.setAttribute("user",user);

                    //查询数据库是否存在用户,不存在放入数据库中
                    if (userService.findUserByUserOpenId(user.getOpenId()) == null){
                        userService.addUser(user);
                    }
                }else{
                    model.addAttribute("code","获取用户失败");
                }
            }else{
                model.addAttribute("code","获取access_token失败");
            }

        }else{
            model.addAttribute("code","获取code失败");
        }


        return "redirect:/user/index";
    }


微信公众号之免登陆快速入门

一、前言之前csdn有个账号,不过由于没有绑定手机号(这个手机号不用了),于是就被弃用了,于是新开了个账号(心疼里面的几十篇文章啊)。新账号开头写下微信公众号方面的一个专栏。因为最近实习用的比较多。二...
  • ssbb1995
  • ssbb1995
  • 2017-08-29 10:35:04
  • 1169

微信公众号授权登录

  • 2017年04月25日 09:40
  • 2.54MB
  • 下载

微信公众号授权登录开发

  • 2017年06月12日 11:44
  • 269KB
  • 下载

微信公众号开发之登录流程

1.浏览器js 请求java的islogin 接口2.java 从session 中获取当前用户3.能获取到说明已经登录4.不能获取到说明没有登陆5.返回一个result6.resuel.code =...
  • redbelt
  • redbelt
  • 2017-03-18 21:27:49
  • 849

微信公众号授权登录(应用免登陆)

微信授权登录,可以帮助服务号应用实现免登陆(实质上通过code换取access_token),即使换个手机登录微信,应用仍然是登录状态。 本文简单讲下微信网页授权登录。...
  • u010882234
  • u010882234
  • 2017-03-28 14:06:28
  • 7847

微信公众号 授权登录 JAVA

微信Java授权登录
  • qq_36020545
  • qq_36020545
  • 2017-02-20 11:55:10
  • 10789

C# 微信公众号授权登录

  • 2017年09月04日 20:17
  • 155KB
  • 下载

免费共享版-多账号批量登录微信公众号工具软件(微众公众号助手)

  • 2014年11月30日 23:57
  • 388KB
  • 下载

微信公众号关注后直接登录网站

1,获取code 在要实现的地方调用最后的网址,这里需要两项,appid和返回的网址 var appid="{:C('WX_APPID')}"; var back_url="{:U('wx_signb...
  • zhjhwer
  • zhjhwer
  • 2016-07-26 10:39:03
  • 2183

微信公众号授权登录之二(tp5)

public function _initialize(){//查看用户是否授权登录过 没有的话跳转到授权登录页面 if(empty(session::get('user'))) { ...
  • stand_forever
  • stand_forever
  • 2018-02-02 16:35:43
  • 167
收藏助手
不良信息举报
您举报文章:微信公众号登录
举报原因:
原因补充:

(最多只允许输入30个字)