• 解密第三方登录-微信扫码登录 Java生成二维码


    场景及优点

    理论基础

    理论基础-OAuth2.0

    OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方。

    OAuth在全世界得到广泛应用,目前的版本是2.0版。

    协议特点:

    简单:不管是OAuth服务提供者还是应用开发者,都很易于理解与使用;

    安全:没有涉及到用户密钥等信息,更安全更灵活;

    开放:任何服务提供商都可以实现OAuth,任何软件开发商都可以使用OAuth;

    角色说明

    四种授权模式

    授权码模式(Authorization Code Grant)

    隐式授权模式(Implicit Grant)

    用户名密码模式(Resource Owner Password Credentials Grant)

    客户端模式(Client Credentials Grant)

    授权码模式是OAuth2目前最安全最复杂的授权流程

    二维码

    二维码 (dimensional barcode) ,又称二维条码,是在一维条码的基础上扩展出的一种具有可读性的条码。设备扫描二维条码,通过识别条码的长度和宽度中所记载的二进制数据,可获取其中所包含的信息

    总之:二维码是信息的载体

    例如:将黑马程序员的网址写入二维码,扫描二维码就可以打开官网

    java生成二维码

    Hutool是一个Java工具包类库,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类。

    纠错级别

    L、M、Q、H 由低到高。

    低级别的像素块更大,可以远距离识别,但是遮挡就会造成无法识别

    高级别则相反,像素块小,允许遮挡一定范围,但是像素块更密集

    准备工作

    准备工作-账号申请
    扫码登陆微信有两种实现方式

    1.基于微信公众平台的扫码登录

    让第三方应用投入微信的怀抱而设计的,这第三方应用指的是比如android、ios、网站、系统等;

    2.基于微信开放平台的扫码登录

    为了让程序员小伙伴利用微信自家技术(公众号、小程序)开发公众号、小程序而准备的。

    区别

    微信开放平台需要开企业认证才能注册。

    微信公众平台需要认证微信服务号,才能进行扫码登录的开发。只需申请一个公众号。

    测试公众号申请

    微信公众平台

    实现细节

    实现细节-第一步:用户同意授权,获取code

    实现细节-第二步:通过code换取网页授权access_token

    公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。

    尤其注意:由于公众号的secret和获取到的access_token安全级别都非常高,必须只保存在服务器,不允许传给客户端。后续刷新access_token、通过access_token获取用户信息等步骤,也必须从服务器发起。

    实现细节-第三步:刷新access_token(如果需要)

    实现细节-第四步:拉取用户信息(需scope为 snsapi_userinfo)

    实现细节-第五步:保存本地会话

    获取到用户授权的信息后,需要保存在应用端,防止频繁需要用户授权

    本地会话实现方式可用:Redis+cookie、JWT等常用技术

    前端页面跳转

    程序员各阶段应该掌握的技术与能力

    非常感谢您阅读到这里,创作不易!如果这篇文章对您有帮助,希望能留下您的点赞👍 关注💖 收藏 💕评论💬感谢支持!!!

    听说 三连能够给人 带来好运!更有可能年入百w,进入大厂,上岸

  • 相关阅读:
    nocos配置中心使用教程(NACOS 1.X版本)
    Redis -- 基础知识2
    windows10安装其他版本cuda环境
    图像分割(二)——低照度下自然场景下图像分割的一种新方法
    python常用知识梳理(必看篇)
    【云原生】Docker镜像的创建,Dockerfile
    java中的IO缓冲流(高效流)---原始流的升级版
    Java面向对象程序设计综合练习1(编程题)
    信息系统项目管理教程(第4版):第二章 信息技术及其发展
    原创|一个统计查询模块基于设计模式的抽象设计
  • 原文地址:https://blog.csdn.net/m0_67184231/article/details/134527364