跳转到主要内容

MiniApp 概览与核心标识:miniapp_id、shortName、entryUrl 与直达链接

MPChat MiniApp 是什么,以及标识如何配合:miniapp_id 与 shortName 区别、entryUrl、botUsername、直达链接与 ?startapp= → start_param。

不要混淆这些标识。miniapp_id 是 MPChat 生成的、带签名的业务 ID;shortName 是每个 Bot 下的链接名;entryUrl 是用户最终打开的页面。三者角色不同。


总览

MPChat MiniApp 是在 MPChat 内打开的 Web 应用。当前阶段聚焦于:打开 MiniApp、暴露签名后的初始化数据、让后端验证用户身份。尚未实现完整 WebApp JavaScript API。

核心标识

名称

来源

用途

miniapp_id

创建 MiniApp 时由 MPChat 生成(形如 ma_...)。

业务 ID;出现在签名后的 initData.miniapp_id。需在后端校验。

shortName

创建时设置的短链名。

与 bot 用户名组合成直达链接。同一 Bot 下唯一。

entryUrl

创建时设置的 H5 入口 URL。

用户打开的页面;在 sendMessage 中作为 web_app.url。

botUsername

bot 用户名。

直达链接的第一段路径。

直达链接规则

https://mp.net/{botUsername}/{shortName}

  • 路径中不要带 @。

  • shortName 在同一 Bot 下唯一;不同 Bot 可重名。

  • 只传 botUsername 只解析到 Bot、不会选中默认 MiniApp——请带上 shortName。

  • 启动参数会放进签名的 initData.start_param;前端读 initDataUnsafe.startParam 做路由。

创建与打开如何衔接

  • 创建 MiniApp(例如 BotFather /newapp);记录 miniapp_id、shortName、entryUrl。

  • 通过 sendMessage 的 web_app 按钮或直达链接打开。

  • 打开时 MPChat 生成签名的启动上下文;后端用签名的 miniapp_id 确认请求属于哪个 MiniApp。

shortName 不是 miniapp id

  • 开发者常把 shortName 误叫「miniappid」,这是错的。

  • miniapp_id(形如 ma_…)是平台签发的业务 ID,出现在签名 initData 里。

  • shortName 是创建时自定义的短名,与 botUsername 组成直链。

  • 只传 botUsername 不会选中默认 MiniApp——必须带上 shortName。

直达链接与 startapp

https://mp.net/{botUsername}/{shortName}
https://mp.net/{botUsername}/{shortName}?startapp=report_0528

  • startapp 查询参数会原样进入签名后的 initData.start_param。

  • 前端读 initDataUnsafe.startParam(以及客户端若注入的 tgWebAppStartParam)做路由。

  • 消息按钮上的 web_app.url 也可带同一参数;不要把 startapp 写进已保存的 MiniApp entryUrl。

  • 命名建议:shortName 优先小写字母 / 数字 / 下划线;同一 Bot 下不可重复。精确长度限制以 BotFather / 官方文档为准。

相关文章

miniapp_id 不是前端定义的页面 ID,也不等于 shortName。始终信任原始 initData 中的签名值,绝不信任前端提交的未签名值。

这是否解答了您的问题?