TG创建小程序交互APP登录以及机器人信息
1、搜索 BotFather ,输入命令 /newbot 创建机器人。

2、修改机器人信息 /mybots

编辑名称 : 修改机器人名称
编辑关于: 修改关于 hayden yyds,修改以后打开机器人会出现在下图
编辑描述 : 机器人的描述
编辑描述图片 : 机器人的图片
编辑 Botpic : 点击以后发送图片,修改机器人的头像
编辑命令 : 编辑命令以后机器人对话框旁边会出现菜单,点击菜单可以出现我们编辑d

创建小程序:发送 /newapp 命令,选择关联小程序的机器人。 然后按照提示输入标题和描述。

完成以后会要我们 :现在上传演示 GIF 或发送/empty 以跳过此步骤。
我们跳过以后会让我们输入小程序外部链接的https的url。
完成以后:很好!现在请为您的 Web 应用选择一个简称:3-30 个字符,a-zA-Z0-9_。此简称将用于 t.me/TetrisHayDenBot/myapp 等 URL,并作为您的 Web 应用的唯一标识符。

完成以后返回给我们小程序的访问链接地址

将我们机器人菜单改为自定义按钮。
输入命令: /mybots ,点击 Menu Button

后续。。。。。。

到此我们完成了TG小程序配置
使用TG小程序交互我们web平台,进行登录操作
Telegram Web Apps在启动时会提供一个initData和hash参数,用于验证数据的完整性和来源。你可以使用这些参数来确保数据没有被篡改。
当我们获取到了initData以后可以做一个hash验签:
package com.app.web;
import org.apache.commons.codec.binary.Hex;
import org.springframework.boot.SpringApplication;import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.codec.digest.HmacAlgorithms;
import org.apache.commons.codec.digest.HmacUtils;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;@Slf4j
@EnableScheduling
@SpringBootApplication
public class PeipeiApplication {public static void main(String[] args) {// initData和botTokenString initData = "user=%7B%22id%22%3A5000109645%2C%22first_name%22%3A%22John%22%2C%22last_name%22%3A%22Zeng%22%2C%22language_code%22%3A%22zh-hans%22%2C%22allows_write_to_pm%22%3Atrue%7D&chat_instance=-1844952925335620055&chat_type=private&auth_date=1720850073&hash=79b805a0d61c577211e63fa8f2df178c87eff97ce162218fffc84faa2f84e900";//这个botToken就是我们创建机器人的token,创建的机器人和TG小程序绑定的String botToken = "5000906011:AAFqS3Ygb9eKYHJ8jJ_ply_3awwC79DrbeY";// 提取hash并解码其余的键值对Map<String, String> params = Arrays.stream(initData.split("&")).map(param -> param.split("=", 2)).collect(Collectors.toMap(arr -> arr[0],arr -> {try {return URLDecoder.decode(arr[1], StandardCharsets.UTF_8.name());} catch (UnsupportedEncodingException e) {throw new RuntimeException(e);}}));// 提取并移除hashString hash = params.remove("hash");// 按键名排序其余的键值对String dataCheckString = params.entrySet().stream().sorted(Map.Entry.comparingByKey()).map(entry -> entry.getKey() + "=" + entry.getValue()).collect(Collectors.joining("\n"));// 生成密钥byte[] secretKey = hmacSha256("WebAppData", botToken);// 生成HMAC-SHA256签名String computedHash = hmacSha256Hex(secretKey, dataCheckString);// 验证hashif (computedHash.equals(hash)) {System.out.println("Data is valid");} else {System.out.println("Data is invalid");}}private static byte[] hmacSha256(String key, String data) {try {Mac mac = Mac.getInstance("HmacSHA256");SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "HmacSHA256");mac.init(secretKeySpec);return mac.doFinal(data.getBytes(StandardCharsets.UTF_8));} catch (Exception e) {throw new RuntimeException("Failed to calculate hmac-sha256", e);}}private static String hmacSha256Hex(byte[] key, String data) {try {Mac mac = Mac.getInstance("HmacSHA256");SecretKeySpec secretKeySpec = new SecretKeySpec(key, "HmacSHA256");mac.init(secretKeySpec);byte[] hashBytes = mac.doFinal(data.getBytes(StandardCharsets.UTF_8));return Hex.encodeHexString(hashBytes);} catch (Exception e) {throw new RuntimeException("Failed to calculate hmac-sha256 hex", e);}}
}
相关文章:
TG创建小程序交互APP登录以及机器人信息
1、搜索 BotFather ,输入命令 /newbot 创建机器人。 2、修改机器人信息 /mybots 编辑名称 : 修改机器人名称 编辑关于: 修改关于 hayden yyds,修改以后打开机器人会出现在下图 编辑描述 : 机器人的描述 编辑描述图片 : 机器人的图片 编辑 Botpic…...
探索大模型能力--prompt工程
1 prompt工程是什么 1.1 什么是Prompt? LLM大语言模型终究也只是一个工具,我们不可能每个人都去训一个大模型,但是我们可以思考如何利用好大模型,让他提升我们的工作效率。就像计算器工具一样,要你算10的10倍&#x…...
【经验分享】运用云服务器实现挂机手机网课的操作,部分手机软件适用
目录 第一步下载手机模拟器 第二步找到模拟器的文件位置 第三步找到模拟器的下载文件进行打包处理 编辑 第四步将模拟器粘贴到云服务器上 第五步运行程序 第六步在模拟器中下载网课软件 第一步下载手机模拟器 这里我下载的是联想模拟器,用来模拟手机环境 随…...
【从0到1进阶Redis】主从复制 — 主从机宕机测试
上一篇:【从0到1进阶Redis】主从复制 测试:主机断开连接,从机依旧连接到主机的,但是没有写操作,这个时候,主机如果回来了,从机依旧可以直接获取到主机写的信息。 如果是使用命令行,来…...
Flask启动5000端口后关不掉了?
事情是这样的: 使用python app.py启动flask应用后,又启动了另一个flask测试应用,也能启动成功,也没有报设么端口冲突,关闭黑窗口后,访问还是有守护进程在运行, 为什么我知道5000还在运行&#…...
Redis的热key解决
1、Redis热Key会带来哪些问题 1、流量集中,达到物理网卡上限。 当某一热点 Key 的请求在某一主机上超过该主机网卡上限时,由于流量的过度集中,会导致服务器中其它服务无法进行。 2、请求过多,缓存分片服务被打垮。 如果热点过于…...
在linux中查找 / 目录下的以.jar结尾的文件(find / -name *.jar)
文章目录 1、查找 / 目录下的以.jar结尾的文件 1、查找 / 目录下的以.jar结尾的文件 [rootiZuf6332h890vozldoxcprZ ~]# find / -name *.jar /etc/java/java-1.8.0-openjdk/java-1.8.0-openjdk-1.8.0.342.b07-1.el9_0.x86_64/lib/security/policy/limited/US_export_policy.ja…...
【Python爬虫教程】第6篇-使用session发起请求
为什么要使用session 前面介绍了如何使用reqesuts发起请求,今天介绍如何使用session发起请求。session简单理解就是一种会话机制,在浏览器中我们登录完之后,后面再请求服务数据都不需要再登录了,以为Cookie里已经保存了你的会话状…...
【Hot100】LeetCode—763. 划分字母区间
目录 题目1- 思路2- 实现⭐763. 划分字母区间——题解思路 3- ACM 实现 题目 原题连接:763. 划分字母区间 1- 思路 思路 目标:同样的字母 字符串尽可能的长 问1:怎么确定字母数 ——> 哈希表问2:怎么让字符尽可能的长&#…...
分布式服务基于Zookeeper的分布式锁的实现
一、序言 ZooKeeper 的分布式锁机制是一种协调多个客户端访问共享资源的方法。通过使用 ZooKeeper 的持久化节点和临时顺序节点,可以实现高效且可靠的分布式锁。下面是分布式锁的工作原理以及如何使用它的具体步骤。 二、Zookeeper分布式锁的核心原理 创建锁目录节…...
Rust编程-I/O
文件读取: 依赖:标准库中use std::fs; 模块 读取文件:fs::read_to_string(filepath:string) -> Result<String> String是文件内容 下面代码来自《Rust权威指南》,主要作用是从文件中检索,并返回检索内容所在的行…...
FastAPI 学习之路(四十七)WebSockets(三)登录后才可以聊天
之前我们是通过前端自动生成的token信息,这次我们通过注册登录,保存到本地去实现。首先,我们实现一个登录页面,放在templates目录下。 <!DOCTYPE html> <html lang"en"> <head><meta charset&quo…...
数据结构—链式二叉树-C语言
代码位置:test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言: 在现实中搜索二叉树为常用的二叉树之一,今天我们就要通过链表来实现搜索二叉树。实现的操作有:建二叉树、前序遍历、中序遍历、后序遍历、求树的节点个数、求…...
nginx代理gitee
背景 若干台agv设备,这些设备都是没有公网的(无法访问百度等)。 一台服务器(ubuntu20.04)有线可以公网,无线可以实现内部通信(agv,plc等设备)。 目的 agv每一次更新代码,拉取代码等都需要切换到有公网的网络,多台agv设…...
一款IM即时通讯聊天系统源码,包含app和后台源码
一款IM即时通讯聊天系统源码 聊天APP 附APP,后端是基于spring boot开发的。 这是一款独立服务器部署的即时通讯解决方案,可以帮助你快速拥有一套自己的移动社交、 企业办公、多功能业务产品。可以 独立部署!加密通道!牢牢掌握通…...
Camunda如何通过外部任务与其他系统自动交互
文章目录 简介流程图外部系统pom.xmllogback.xml监听类 启动流程实例常见问题Public Key Retrieval is not allowed的解决方法java.lang.reflect.InaccessibleObjectException 流程图xml 简介 前面我们已经介绍了Camunda的基本操作、任务、表: Camunda组件与服务与…...
Django ORM中ExpressionWrapper的用途
ExpressionWrapper 在 Django ORM 中,直接在 filter 方法中进行字段间的比较时,不能直接使用算术运算符(如 、-、*、/)来操作 F 对象,需要使用 ExpressionWrapper 来包装表达式并指定输出字段类型。 使用Q对象&#…...
什么软件修复视频画质比较好,视频画质修复工具
有些视频中可能会出现噪点、残影、颜色失真等问题,导致观看时体验感不太好,修复视频画质可以去除这些问题,使视频更加干净、清晰和真实。 高质量的视频画质能够提高观众的观看体验,让观众更加享受观看视频的过程。特别是在需要展示…...
效能工具:执行 npm start 可直接切换proxy代理UR后直接启动项目
1) 背景: 我们项目是2个前端3个后端的配置。前端和每个后端都有需要调试的接口。 因此经常切换vite.congig.js中的proxy后端代理链接,是挺麻烦的。 于是我研究如何能快速切换后端URL,所幸懒人有懒福,我找到了Inquirer 和 fs, 实…...
MongoDB自学笔记(一)
一、MongoDB简介 MongoDB是一款基于C开发的文档型数据库。与传统的关系型数据库有所不同,MongoDB面向的是文档,所谓的文档是一种名为BSON (Binary JSON:二进制JSON格式)是非关系数据库当中功能最丰富,最像…...
通信对抗新利器:HWG1在铁路高速领域的卓越应用
在现代化交通体系中,铁路、高速等关键领域的通信安全至关重要。为了应对复杂多变的电磁环境,确保通信系统的稳定运行,成都鼎讯信通科技有限公司推出了通信信号干扰模拟器HWG1,为交通领域的通信对抗训练提供了强有力的支持。HWG1通…...
大型SaaS系统数据范围权限设计:从RBAC到动态数据域的实战解析
1. 项目概述:为什么数据范围权限是SaaS的“命门”在SaaS(软件即服务)领域摸爬滚打十几年,我见过太多项目因为早期忽略了数据范围权限这个“小”问题,最终导致架构重构、客户流失甚至数据泄露的“大”事故。一个面向企业…...
TDA4VEN-Q1入门级ADAS SoC:异构架构与全景泊车方案实战
1. 项目概述:为什么选择TDA4VEN-Q1这颗“入门级”SoC?在汽车电子,尤其是ADAS(高级驾驶辅助系统)领域,选型永远是项目成败的第一步。面对市场上琳琅满目的处理器,从动辄几十TOPS算力的域控制器芯…...
华硕笔记本性能管家G-Helper:3步告别臃肿控制中心,释放硬件潜能
华硕笔记本性能管家G-Helper:3步告别臃肿控制中心,释放硬件潜能 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, V…...
Engage2026会议各种Notes/Domino演示文档可以下载了
大家好,才是真的好。上周翻阅了一下Engage 2026大会的网站,发现一大半会议议程上的PPT演示文稿都已经放出来能够进行下载。地址是:https://engage.ug/engage2.nsf/Pages/session2026如果没看到下载的地方,要以List的方式来查看所有…...
如何3分钟搞定抖音视频批量下载?完整无水印下载指南
如何3分钟搞定抖音视频批量下载?完整无水印下载指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support…...
Mythos模型:通用AI在漏洞挖掘与 exploit 生成中的范式跃迁
1. 这不是一次普通升级:Mythos 的能力跃迁到底意味着什么“Claude Mythos Preview”——这个名字在2026年4月的AI圈里炸开时,我正调试一个用Opus 4.6做代码审计的自动化流水线。看到基准测试数据的第一反应不是兴奋,而是下意识关掉了终端窗口…...
KMS智能激活终极指南:三步永久激活Windows和Office的完整教程
KMS智能激活终极指南:三步永久激活Windows和Office的完整教程 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Office文档突然…...
在自动化工作流中集成大模型,利用Taotoken统一API调用与管理
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在自动化工作流中集成大模型,利用Taotoken统一API调用与管理 将大模型能力集成到自动化工作流中,例如CI/CD…...
【Coze工作流】零代码做AI自动化,小白也能5分钟上手
一、问题背景:手工做重复AI任务太累,想自动化但不会写代码在日常办公或者内容创作中,很多人都有过这样的痛点:每天要重复打开各种AI工具。比如你要写一篇爆款文章,先要找AI找选题,再让AI写大纲,…...
