小结

在历经状态机设计,爆栈,中文字体缺失,URL编码问题,C++野指针,页面竞争,任务假死,二维码无法扫描等亿系列问题后,终于弄好了。

授权二维码

授权成功

授权成功

目标

采用OAuth2的设备码授权方式,设备请求用户代码并向用户展示,由用户在自己的设备上进行授权,授权完成后ESP32拿到令牌,然后对用户资源进行访问。

已实现功能

系统

采用FreeRTOS任务模式,实现多任务并发,结合排他锁解决并发竟态问题。

WIFI

支持断线重连,当出现断线时自动切换任务。

UI

支持切换不同页面,为不同功能页提供显示功能。

OAuth

支持自动轮询授权情况,并支持当授权链接失效时自动重新获取以及生成二维码。

不足

感觉还不是最佳实践,系统健壮性不高,无法支撑复杂功能(未验证)

屏幕还是太小了,128*64的分辨率一个正常包含链接的二维码都塞不下去,目前只能用二维码展示用户授权所需的用户代码,无法展示完整授权链接,可能需要制作一个专用APP用于扫码来拼接授权链接并在用户端调起授权。

下一步方向

寻找最佳实践的设计,增加系统健壮性,目前状态机设计还有提升空间

支持复杂的交互操作,支持16键输入控制系统以及页面,实现菜单选择等

接入NFC控件,便于用户进行碰一碰授权操作

接入蓝牙通信,动态控制设备连接附近WIFI(可能需要制作配套APP)

接入MQTT,实现远程控制(已实现样例)