微信公众号的授权及分享

最近忙着做一个登录公众号获取用户信息及用户分享后可以得到积分。

首先用户点击一个链接

window.location.href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=#&redirect_uri=#&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"

appid是你公众号里的

redirect_ur是调用微信返回数据,咱们系统接收code的方法,这个必须要是外网可以访问的  http://www.....com/OhdWeixin/UserAction!getPersonal.action

response_type=code

cope=snsapi_userinfo 

state=STATE#wechat_redirect"

1.获取用户信息de action;可以在这一步就获取用户的信息 放在自己的库里 ,我们需求是要在登录的时候把登录信息一起放在一个库里,

public String getPersonal() throws Exception {
        String result="login";
        BindUserFace bindUserFace = this.getBeanByBeanClass(BindUserFace.class);
        String code = request.getParameter("code");           //用户同意授权后,能获取到code
            if(!"authdeny".equals(code) && code!=null){
                //获取网页授权accexx_token
                WeixinOauth2TokenView weixinOauth2TokenView = AdvancedUtil.getOauth2AccessToken(CommonUtil.appId, CommonUtil.appSecret, code);
                if(weixinOauth2TokenView!=null) {
                    //用户标识
                    String openId = weixinOauth2TokenView.getOpenId();
                    //网页授权接口访问凭证
                    String accessToken = weixinOauth2TokenView.getAccessToken();
                    session.put("openid",openId);
                    session.put("accessToken",accessToken);
                    BindWxUser bindWxUser=bindUserFace.findBindWxUser(openId);//openId
                    if(bindWxUser!=null){
                        session.put("bindWxUser",bindWxUser);
                        getMallURL();
                        result="personal";//这是跳到个人中心页面
                    }else{
                        result="login";//如果没有
                    }
                }
            }
        return result;
    }

2.要获取用户的openid   来获取用户的头像:

/**
     * 登录(注册)
     */
    public String login() throws Exception {
        BindUserFace bindUserFace = this.getBeanByBeanClass(BindUserFace.class);
        if(session.get("openid")==null && session.get("accessToken")==null) {
            String code = request.getParameter("code");
            //用户同意授权
            if(!"authdeny".equals(code) && code!=null){
            String accessToken= (String) session.get("accessToken");
            String openid= (String) session.get("openid");
            BindWxUser binUs=bindUserFace.findBindWxUser(openid);//openId
            if(binUs==null){
                //获取用户信息
                String tel=bindWxUser.getMobile();
                bindWxUser=AdvancedUtil.getSNSUserInfo(accessToken,openid);
                bindWxUser.setMobile(tel);
                bindWxUser.setRecommender(recommender);
                bindUserFace.addBindWxUser(bindWxUser);//保存用户信息
                session.put("bindWxUser",bindWxUser);
                getMallURL();
            }
        }
        }
        return "personal";
    }

 

微信公众号的授权及分享

上一篇:微信退款时候报”请求被中止: 未能创建 SSL/TLS 安全通道“或”The request was aborted: Could not create SSL/TLS secure channel“的错误


下一篇:获取微信支付所需签名等