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在启动时会提供一个initDatahash参数,用于验证数据的完整性和来源。你可以使用这些参数来确保数据没有被篡改。

当我们获取到了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);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/872226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

瑞幸私域运营案例拆解

1. 私域运营概述 私域运营是一种以用户为中心的运营模式&#xff0c;通过建立和维护与用户之间的直接联系&#xff0c;实现品牌与用户之间的深度互动和长期价值挖掘。 1.1 私域流量定义 私域流量指的是企业通过自有渠道&#xff0c;如微信公众号、小程序、社群等&#xff0c…

【通信协议-RTCM】MSM语句(1) - 多信号GNSS观测数据消息格式

注释&#xff1a; RTCM响应消息1020为GLONASS星历信息&#xff0c;暂不介绍&#xff0c;前公司暂未研发RTCM消息类型版本的DR/RTK模块&#xff0c;DR/RTK模块仅NMEA消息类型使用 注释&#xff1a; 公司使用的多信号语句类型为MSM4&MSM7&#xff0c;也应该是运用最广泛的语句…

暑期备考2024上海初中生古诗文大会:单选题真题和独家解析

现在距离2024年初中生古诗文大会初选还有不到4个月&#xff08;11月3日正式开赛&#xff09;&#xff0c;我们继续来看10道选择题真题和详细解析。为帮助孩子自测和练习&#xff0c;题目的答案和解析统一附后。 本专题持续分享。 一、上海初中古诗文大会历年真题精选(参考答案…

探索IP形象设计:快速掌握设计要点

随着市场竞争的加剧&#xff0c;越来越多的企业开始关注品牌形象的塑造和推广。在品牌形象中&#xff0c;知识产权形象设计是非常重要的方面。在智能和互联网的趋势下&#xff0c;未来的知识产权形象设计可能会更加关注数字和社交网络。通过数字技术和社交媒体平台&#xff0c;…

等保测评是什么 怎么做

在信息安全日益受到重视的今天&#xff0c;等保测评已成为企事业单位不可或缺的安全合规活动。然而&#xff0c;对于等保测评的理解和实施&#xff0c;仍存在诸多误区。本文将对等保测评的周期、法律责任、网络环境、测评对象、费用及常见误区进行深入解析&#xff0c;以期帮助…

源码安装zabbix5.0.36完整版

源码安装zabbix5.0.36完整版 环境&#xff1a;CentOS Linux release 7.9&#xff0c;cpu:16&#xff0c;mem:32G软件包如下&#xff1a; zabbix-5.0.36.tar.gz mysql-8.0.28-linux-glibc2.17-x86_64-minimal.tar.xz nginx-1.6.2.tar.gz 1. 配置前准备 systemctl stop firewa…

[MySQL][表的增删查改][二][Retrieve][SELECT][WHERE]详细讲解

目录 1.Retrieve1.基本语法2.SELECT列1.全列查询2.查询字段为表达式3.为查询结果指定别名4.结果去重 3.WHERE条件1.比较运算符2.逻辑运算符3.示例 4.结果排序1.基本语法2.示例 5.筛选分页结果 1.Retrieve 1.基本语法 SELECT [DISTINCT] * | {column [, column] ...} [FROM ta…

基于pytesseract的OCR图片识别

简介 pytesseract是基于谷歌的tesseract的OCR包&#xff0c;支持识别一些简单的数字、字母、中文。 安装 安装引擎 下载地址&#xff1a;https://digi.bib.uni-mannheim.de/tesseract/ 一般是Windows 64位系统最新版&#xff1a; 如果要识别中文&#xff0c;注意选中中文…

【微服务】Spring Cloud Config解决的问题和案例

文章目录 强烈推荐引言解决问题1. 配置管理的集中化2. 配置的版本控制3. 环境特定配置4. 配置的动态刷新5. 安全管理敏感数据6. 配置的一致性 组件1. **配置服务器&#xff08;Config Server&#xff09;**2. **配置客户端&#xff08;Config Client&#xff09;** 配置示例配置…

十一、(正点原子)Linux异步通知

一、简介 我们首先来回顾一下“中断”&#xff0c;中断是处理器提供的一种异步机制&#xff0c;我们配置好中断以后就可以让处理器去处理其他的事情了&#xff0c;当中断发生以后会触发我们事先设置好的中断服务函数&#xff0c;在中断服务函数中做具体的处理。 Linux …

JVM常见知识点总结

最近在看关于JVM的一些知识点&#xff0c;之前也有了解过&#xff0c;可是时间一长就总会忘&#xff0c;索性按照自己的记忆方式去回顾一下知识点。 首先&#xff0c;jvm是Java程序运行的环境&#xff0c;全称为Java Virtual Machine 当我们写好的Java文件经过javac编译后就变成…

Java SE—基本数据类型(详细讲解)

&#x1f4dd;个人主页&#x1f339;&#xff1a;誓则盟约 ⏩收录专栏⏪&#xff1a;Java SE &#x1f921;往期回顾&#x1f921;&#xff1a;Python 神器&#xff1a;wxauto 库——解锁微信自动化的无限可能 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f3…

售前工程师的AI大模型转型之路

随着人工智能技术的飞速发展&#xff0c;大模型&#xff08;Large Language Models, LLMs&#xff09;正逐渐成为IT行业的热点。对于售前工程师来说&#xff0c;转行大模型领域不仅意味着新的机遇&#xff0c;也面临着诸多挑战。本文将探讨售前工程师转行大模型领域的机遇与挑战…

嵌入式人工智能(6-树莓派4B按键输入控制LED)

1、按键 按键的原理都是一样&#xff0c;通过按键开关的按下导通&#xff0c;抬起断开的情况&#xff0c;GPIO引脚来检测其是否有电流流入。GPIO有input()方法&#xff0c;对于GPIO引脚检测电流&#xff0c;不能让其引脚悬空&#xff0c;否则引脚会受周边环境电磁干扰产生微弱…

SpringBoot之健康监控(Actuator)

1&#xff0c;基本介绍 Spring Actuator 是 Spring Boot 提供的一个扩展模块&#xff0c;用于监控和管理应用程序的生产环境。它通过 HTTP 端点暴露了大量的监控和管理功能&#xff0c;使得开发者可以在运行时查看应用程序的运行状况、配置信息、性能指标等。 主要功能&#…

探索未来视界:LC201小尺寸红外热成像机芯引领行业新变革

在当今科技飞速发展的时代&#xff0c;红外热成像技术正以前所未有的方式革新着诸多行业&#xff0c;而灵卡技术推出的LC201小尺寸红外热成像机芯&#xff0c;正是这一变革的先锋。专为体积和功耗敏感领域设计&#xff0c;LC201以超紧凑的22x22mm尺寸、轻量化设计&#xff0c;及…

什么是边缘计算技术和边缘计算平台?

随着物联网、5G技术和人工智能的不断发展&#xff0c;数据的规模和种类也在快速增加。在这种背景下&#xff0c;传统的云计算模式面临着一些问题&#xff0c;例如延迟高、网络拥塞等&#xff0c;这些问题限制了数据的处理速度和效率&#xff0c;降低了用户的使用体验。为了解决…

非对称加解密和签名

非对称加解密特点 一对密钥&#xff0c;公钥和私钥。私钥自己持有&#xff0c;公钥公开给通信的对方。 如果公钥用作加密&#xff0c;那么私钥用作解密。 如果私钥用做加密&#xff0c;那么公钥用作解密。 如果数据量少可用非对称加密算法直接加密。 如果数据量大&#xff0c;…

【Python爬虫教程】第7篇-requests模块的cookies保存和使用

文章目录 为什么要保存cookiesrequests.utils工具类保存cookies到本地文件从本地文件解析cookies使用使用实践 为什么要保存cookies 保存cookies是避免每次都登录获取权限&#xff0c;一遍权限是有过期时间的&#xff0c;不需要每次重复登录&#xff0c;可以将cookies保存起来…

MySQL事务隔离级别+共享锁,排他锁,乐观锁,悲观锁

在操作数据库的时候&#xff0c;可能会由于并发问题而引起的数据的不一致性&#xff08;数据冲突&#xff09;。 MySQL事务隔离级别 一个事务的执行&#xff0c;本质上就是一条工作线程在执行&#xff0c;当出现多个事务同时执行时&#xff0c;这种情况则被称之为并发事务&am…