实现微信扫码登陆

简介: 实现微信扫码登陆

参考文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316518&token=&lang=zh_CN

获取token时序图

image.png

引入依赖

<dependencies>
    <!--httpclient-->
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
    </dependency>
    <!--commons-io-->
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
    </dependency>
    <!--gson-->
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
    </dependency>
</dependencies>
 
application.properties
# 微信开放平台 appid
wx.open.app_id=wxed9954c01bb89b47
# 微信开放平台 appsecret
wx.open.app_secret=a7482517235173ddb4083788de60b90e
# 微信开放平台 重定向url
wx.open.redirect_url=http://localhost:8160/ucenterservice/api/ucenter/wx/callback
controller(请求用户确认)
@GetMapping("login")
public String genQrConnect(HttpSession session) {
    // 微信开放平台授权baseUrl
    String baseUrl = "https://open.weixin.qq.com/connect/qrconnect" +
            "?appid=%s" +
            "&redirect_uri=%s" +
            "&response_type=code" +
            "&scope=snsapi_login" +
            "&state=%s" +
            "#wechat_redirect";
    // 回调地址
    String redirectUrl = ConstantPropertiesUtil.WX_OPEN_REDIRECT_URL; //获取业务服务器重定向地址
    try {
        redirectUrl = URLEncoder.encode(redirectUrl, "UTF-8"); //url编码
    } catch (UnsupportedEncodingException e) {
        throw new GuliException(20001, e.getMessage());
    }
    // 防止csrf攻击(跨站请求伪造攻击)
    //String state = UUID.randomUUID().toString().replaceAll("-", "");//一般情况下会使用一个随机数
    String state = "atguigu";//为了让大家能够使用我搭建的外网的微信回调跳转服务器,这里填写你在ngrok的前置域名
    System.out.println("state = " + state);
    // 采用redis等进行缓存state 使用sessionId为key 30分钟后过期,可配置
    //键:"wechar-open-state-" + httpServletRequest.getSession().getId()
    //值:satte
    //过期时间:30分钟
    //生成qrcodeUrl
    String qrcodeUrl = String.format(
            baseUrl,
            ConstantPropertiesUtil.WX_OPEN_APP_ID,
            redirectUrl,
            state);
    return "redirect:" + qrcodeUrl;
}

效果

相关文章
|
存储 小程序 数据库
【微信小程序开发】之微信授权登陆
【微信小程序开发】之微信授权登陆
602 0
|
6月前
微信登陆报错:redirect_uri域名与后台配置不一致,错误码:10003 微信支付报错 微信登录报错 微信开发
微信登陆报错:redirect_uri域名与后台配置不一致,错误码:10003 微信支付报错 微信登录报错 微信开发
91 0
|
7月前
|
小程序
微信小程序用户登陆和获取用户信息功能实现
微信小程序用户登陆和获取用户信息功能实现
132 0
|
7月前
|
前端开发 NoSQL 数据库
如何设计 QQ、微信、微博、Github 等等,第三方账号登陆 ?(附表设计)
如何设计 QQ、微信、微博、Github 等等,第三方账号登陆 ?(附表设计)
74 1
|
7月前
|
前端开发 NoSQL 数据库
设计 QQ、微信等第三方账号登陆
设计 QQ、微信等第三方账号登陆
69 0
设计 QQ、微信等第三方账号登陆
|
7月前
|
存储 小程序 前端开发
uniapp微信小程序不强制登陆的逻辑(模仿大厂登陆)
uniapp微信小程序不强制登陆的逻辑(模仿大厂登陆)
225 0
|
7月前
|
小程序 JavaScript 前端开发
微信小程序授权登陆 getUserProfile
微信小程序授权登陆 getUserProfile
175 0
|
存储 前端开发 NoSQL
如何设计 QQ、微信等第三方账号登陆 ?还要我说出数据库表设计!
如何设计 QQ、微信等第三方账号登陆 ?还要我说出数据库表设计!
316 2
|
存储 小程序 数据库
云开发(微信-小程序)笔记(十三)---- 注册登陆
云开发(微信-小程序)笔记(十三)---- 注册登陆
113 0
云开发(微信-小程序)笔记(十三)---- 注册登陆
|
2月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
693 7