java微信扫码关注公众号登录


微信扫码 - 关注公众号后网站自动注册并登录的实现

在自己网站上点击微信登录,网站自己弹出一个二维码、扫描二维码后弹出公众号的关注界面、只要一关注公众号网站自动登录、第二次扫描登录的时候网站直接登录。

注:需先准备一个已经认证过的公众号

一.由于我们自己服务,需要接管微信服务器的推送,所以需要在微信公众号后台配置服务器通知地址

在这里插入图片描述
如上图,需要配置这三项,请注意第一个,服务器地址(url)非常关键,后续微信推送的事件都会进此接口。
但是正常开发环境测试起来都非常费劲,微信访问不到你本地的代码。这边我用的花生壳做的内网穿透,直接就可以访问到本地电脑,开发调试相对方便。

注:上图设置微信会发送一个请求到你的服务器进行验签,验签成功才能设置成功,上代码:

 //设置或修改服务器地址验签方法(微信会发送get请求)注:下方会有一个地址相同的post接口用于接收后续微信推送事件
 @RequestMapping(value = {
    "/token.do" }, method = {
    RequestMethod.GET })
    public String tokenGet(final HttpServletRequest request, final HttpServletResponse response) {
   
        String resultEchostr = "error";
        try {
   
        	// 微信加密签名
            final String signature = request.getParameter("signature");
             // 时间戳
            final String timestamp = request.getParameter("timestamp");
            // 随机数
            final String nonce = request.getParameter("nonce");
            // 随机字符串
            final String echostr = request.getParameter("echostr");
            if (timestamp != null && nonce != null) {
   
            	//此处token应与上图用于验签的token相同才能验签成功,否则会出现token认证失败
                final String[] sortStr = {
    timestamp, nonce, DWSurveyConfig.DWSURVEY_WEIXIN_SERVER_TOKEN };
                final String str = SHA1.sortStr(sortStr);
                final String sha1_0 = SHA1.getSha1(str);
                if (sha1_0.equals(signature)) {
   
                    resultEchostr = echostr;
                }
            }
            response.getWriter().write(resultEchostr);
        }
        catch (Exception e) {
   
            e.printStackTrace();
        }
        return null;
    }

二.相关接口调式

1.获取access_token

调用微信接口获取access_token,请求为get:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET.这里的appid和secret就是上面"基本配置"中公众号开发信息的内容.正常情况下,微信会返回下述JSON数据包给公众
{“access_token”:“61_ZY9o2E1YnN_fZFK6XjR26J9ahssKTfYQXN2Eb_vuHH3VckYGEnHMGOX6vqQieini47Og3M-loDwHKHf89OEwBVhsI2kOO7_NNVnd1Nhdn9e1o0gDkKSfg4LO08BpKw1Z-4b-tllwvrFs3kTkKNKhAFAGJG

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值