实现微信扫码登陆

简介: 实现微信扫码登陆

参考文档: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;
}

效果

相关文章
|
6月前
|
存储 小程序 数据库
【微信小程序开发】之微信授权登陆
【微信小程序开发】之微信授权登陆
386 0
|
7天前
|
小程序
微信小程序用户登陆和获取用户信息功能实现
微信小程序用户登陆和获取用户信息功能实现
16 0
|
7天前
|
前端开发 NoSQL 数据库
如何设计 QQ、微信、微博、Github 等等,第三方账号登陆 ?(附表设计)
如何设计 QQ、微信、微博、Github 等等,第三方账号登陆 ?(附表设计)
26 1
|
7天前
|
前端开发 NoSQL 数据库
设计 QQ、微信等第三方账号登陆
设计 QQ、微信等第三方账号登陆
20 0
设计 QQ、微信等第三方账号登陆
|
7天前
|
存储 小程序 前端开发
uniapp微信小程序不强制登陆的逻辑(模仿大厂登陆)
uniapp微信小程序不强制登陆的逻辑(模仿大厂登陆)
78 0
|
7天前
|
小程序 JavaScript 前端开发
微信小程序授权登陆 getUserProfile
微信小程序授权登陆 getUserProfile
90 0
|
9月前
|
存储 前端开发 NoSQL
如何设计 QQ、微信等第三方账号登陆 ?还要我说出数据库表设计!
如何设计 QQ、微信等第三方账号登陆 ?还要我说出数据库表设计!
207 2
|
9月前
|
存储 小程序 数据库
云开发(微信-小程序)笔记(十三)---- 注册登陆
云开发(微信-小程序)笔记(十三)---- 注册登陆
85 0
云开发(微信-小程序)笔记(十三)---- 注册登陆
|
移动开发 前端开发 JavaScript
【H5】html实现微信授权登陆
在一次前端项目中,需要在网页端拉起微信,实现微信授权登录,然后把调用微信API,获取到用户信息,返回给后端。 网页授权分为两种,一种静默授权,一种非静默授权。微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息; 这篇文章就讲诉一下如何实现微信授权登录。
453 0
【H5】html实现微信授权登陆
|
7天前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。

热门文章

最新文章