使用码上登录实现微信扫一扫登录

码上登录

码上登录是一个小程序,对个体开发者提供了免费的微信扫一扫登录入口,因为微信开发者需要企业认证,没办法在个人网站上做测试。码上登录相当于一个桥接入口,为我们去申请获取扫一扫之后的用户登录信息。

开发和使用

登录的时序图

在这里插入图片描述
首先我们向码上登录的服务器获取二维码信息,然后用户扫码,用户跳转到登录的小程序,用户点击登录,授权,码上登录服务器向自己的服务器回调入口返回数据,然后我们返回登录状态信息。

准备工作

在码上登录创建应用,指定回调URL,获取secretKey

后台开发

我这里使用的springboot 2.2.1.RELEASE,使用openfeign跨服务访问
数据请求接口

    @Resource
    UserService userService;
    @Resource
    UserServiceRemote userServiceRemote;

	@GetMapping(value = "/getQrInfo")
    @CrossOrigin(maxAge = 3600)
    public BaseResponseInfo getQrInfo(){
        JSONObject qRcode = userServiceRemote.getQRcode();
        BaseResponseInfo res = new BaseResponseInfo();
        res.code = 200;
        res.data = qRcode;
        return res;
    }


    @PostMapping(value = "/userScanedInfo")
    public JSONObject backUserScanedInfo(
            @RequestParam(value = "userId",required = false)  String userId,
            @RequestParam(value = "tempUserId",required = false) String tempUserId,
            @RequestParam(value = "nickname",required = false) String nickname,
            @RequestParam(value = "avatar",required = false) String avatar,
            @RequestParam(value = "ipAddr",required = false) String ipAddr){
        log.info("用户信息: "+
                "userId: "+userId+
                "tempUserId: "+tempUserId+
                "nickname: "+nickname+
                "avatar: "+avatar+
                "ipAddr: "+ipAddr);
        JSONObject jsonObject = new JSONObject();
        if (userId != null){
            jsonObject.put("errcode",0);
            jsonObject.put("message","登录成功");
        }else {
            jsonObject.put("errcode",1);
            jsonObject.put("message","登录失败");
        }
        return jsonObject;
    }

自己的服务器向码上登录服务器请求二维码数据(url)

@FeignClient(name = "wx", url = "https://server01.vicy.cn")
public interface UserServiceRemote {
    /**
     * 向码上登录服务器请求二维码
     */
    @GetMapping(value = "/8lXdSX7F************Sdc6zfouSAEz/wxLogin/tempUserId?secretKey=beb789************3ddbab187df24f9")
    JSONObject getQRcode();
}

前端显示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script>
    <script src="https://code.jquery.com/jquery-3.0.0.min.js"></script>
</head>
<body>
<div style="display: block;text-align: center;background-color: aquamarine">
    <h2>码上登录测试</h2>
    <button id="wxLogin">微信登录</button>
</div>
<div style="background-color: antiquewhite">
    <div id="qrcode" style="position: absolute;margin-top: 20px;left: 50%;transform: translate(-50%,0)"></div>
</div>
<script type="text/javascript">

    let qrcode = new QRCode("qrcode", {
        text: "",   //URL地址
        width: 260,
        height: 260,
        colorDark: '#000',    //二维码颜色
        colorLight: "#ffffff"  //背景颜色
    });

    function newQrcode(url) {
        qrcode.makeCode(url)
    }

    $("#wxLogin").click(function () {
        $.ajax({
            url: "http://host:port/user/getQrInfo",
            dataType: "json",   // 写为application/json会跳转error执行函数
            type: "get",
            success: function (result) {
                console.log(result.data.data.qrCodeReturnUrl)
                newQrcode(result.data.data.qrCodeReturnUrl)
            },
        });
    });
</script>
</body>
</html>

点击微信登录后显示二维码,扫码确认的登录即可
在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot框架是一种轻量级、开箱即用的Java开发框架,它大大简化了企业级应用的开发过程。要实现微信扫码登录,可以使用Spring Boot框架结合微信开放平台的API来实现。以下是实现微信扫码登录的步骤: 1. 注册微信开放平台账号并创建应用,获取AppID和AppSecret。 2. 创建Spring Boot项目并导入相关依赖,如web、httpclient等。 3. 在配置文件application.properties中配置微信开放平台的AppID和AppSecret。 4. 创建一个控制器,用于处理登录相关的请求。 5. 定义一个生成微信扫码登录链接的方法,该方法使用AppID、重定向URI和state等参数生成微信登录链接。 6. 在控制器中定义一个登录请求的接口,该接口返回生成的微信扫码登录链接。 7. 创建一个回调接口,用于处理微信登录成功后的回调请求。 8. 在回调接口中获取微信的授权code,通过code和AppID、AppSecret等参数向微信服务器发送请求,获取用户的唯一标识openid。 9. 将获取到的openid存储到数据库或Session中,表示用户已登录。 10. 在需要验证用户登录状态的接口中,通过openid验证用户是否已登录。 以上是使用Spring Boot实现微信扫码登录的基本步骤,通过控制器处理登录和回调接口,以及与微信服务器的交互,可以实现用户使用微信扫码登录系统的功能。当然,具体实现中还需要考虑安全性、数据持久化等问题,以及前端页面的设计和展示等方面的内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值