尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何给MHY_Scanner添加新游戏支持?扫码登录器平台接入实战教程

如何给MHY_Scanner添加新游戏支持?扫码登录器平台接入实战教程 如何给MHY_Scanner添加新游戏支持扫码登录器平台接入实战教程【免费下载链接】MHY_ScannerMHY扫码登录器支持从直播流抢码。项目地址: https://gitcode.com/gh_mirrors/mh/MHY_ScannerMHY_Scanner 是一个免费的米哈游扫码登录器支持从屏幕自动识别二维码登录也能从直播流抢码登录。如果你想知道如何扩展 MHY_Scanner 支持新游戏例如某款新上线的米哈游新作这篇文章就从开发者视角带你完整走一遍平台接入的 5 个关键步骤——从二维码魔数识别到 API 对接全程只需改动 4 个文件。一、先读懂项目扩展点在哪里接入新游戏前先了解三个核心文件它们构成了扩展的骨架文件作用src/Core/ApiDefs.hpp游戏类型枚举、全部 API 地址定义src/Core/ScannerBase.hpp二维码魔数→游戏类型的分发表src/Core/MhyApi.hpp扫码、确认、Token 交换等登录接口封装登录主流程可以概括为一句话识别二维码 → 上报 ticket → 用户确认 → 用账号 token 换取登录。新游戏接入的本质就是把这个流程登记到项目中。二、第 1 步弄清新游戏的二维码魔数与 ticket所有米哈游登录二维码的编码内容里都藏着一个3 位字符的魔数位于字符串第 80 位起用它来区分是哪款游戏。在 src/Core/ScannerBase.hpp 的分发表中可以看到现有游戏的登记方式8F3 → 崩坏3 9E → 原神 8F% → 星穹铁道 %BA → 绝区零实操方法打开手机或网页登录入口生成一张新游戏的二维码用任意扫码工具读出内容字符串记下第 80 位起的 3 个字符以及末尾 24 位字符即ticket。这是后面所有步骤的依据。三、第 2 步在枚举与 API 命名空间中登记游戏打开 src/Core/ApiDefs.hpp做两处登记给GameType枚举加一个成员参考现有Genshin 4、ZenlessZoneZero 12的编号规则选一个未占用的整数值——这个数值后续会作为app_id传给服务器需与米哈游官方接口文档一致新增一个 API 命名空间仿照现有api::mhy::nap的写法定义两个接口地址base /combo/panda/qrcode/scan base /combo/panda/qrcode/confirm其中base通常是https://api-sdk.mihoyo.com拼接上新游戏的地区路径如/xxx_cn。地址常量使用了项目自研的 compile_string.hpp 做编译期字符串拼接照抄即可。四、第 3 步在分发表中注册魔数回到 src/Core/ScannerBase.hpp向setGameType这张map里追加一条记录以第 1 步拿到的 3 位魔数为键对应的lambda负责设置gameType、scanUrl、confirmUrl三个字段。这是整个接入中最核心的一步——因为屏幕识别线程和直播流识别线程src/UI/QRCodeForScreen.cpp、src/UI/QRCodeForStream.cpp都是统一通过这张表来匹配二维码的登记之后两条识别链路自动同时支持新游戏无需任何额外改动。五、第 4 步验证登录链路是否走通用接口打开 src/Core/MhyApi.hpp 检查登录链路对GameType的依赖获取二维码GetLoginQrcodeUrl()直接用app_id整数请求二维码 URL轮询状态GetQRCodeState()解析Init / Scanned / Confirmed状态机确认后从payload取出uid和tokenToken 交换GetStokenByGameToken()完成 stoken 换取最终入库展示昵称。米哈游系游戏大多共用同一套扫码→确认协议只要新游戏接入panda/qrcode体系以上四个接口全部复用零改动。若新游戏有独立登录协议如 B站渠道服那样的scanCheck/scanConfirm特殊流程则需要在 src/Core/BSGameSDK.hpp 中仿照样例新增一套签名与请求函数。六、第 5 步完善 UI 提示让体验闭环最后让新游戏在界面上被看见src/UI/WindowMain.cpp 的loginConfirmTip()中为GameType加一个case弹出正在使用账号 xxx 登录新游戏确认登录的确认框src/UI/WindowMain.ui 中若界面有游戏选择下拉框同步补一项。到此屏幕识别、直播抢码、登录确认弹窗三条链路全部打通。七、常见坑与调试建议魔数取错位置务必从字符串第 80 位起取 3 字符少一位都会导致识别线程静默丢弃二维码app_id用错它是GameType的整数值直接决定扫码接口操作哪款游戏填错会扫了别人的码调试技巧在 Debug 模式下 src/Core/MhyApi.hpp 会打印响应原文可第一时间确认接口通不通回归验证跑一遍 tests/ 目录下的测试用例确保新枚举没有破坏配置序列化src/Core/ConfigDate.cpp。八、小结接入新游戏只改 4 个文件文件改动量src/Core/ApiDefs.hpp加枚举 2 个 API 地址src/Core/ScannerBase.hpp分发表加 1 条记录src/Core/MhyApi.hpp通常零改动协议特例除外src/UI/WindowMain.cpp确认弹窗加 1 个 case可以看出项目把游戏差异收敛到了枚举、API 地址、魔数分发表三个极小的接缝上识别与登录逻辑完全复用——这正是它易于扩展的原因。按本文 5 步走一遍从拿到新游戏二维码到登录成功整个接入过程通常不超过半天。【免费下载链接】MHY_ScannerMHY扫码登录器支持从直播流抢码。项目地址: https://gitcode.com/gh_mirrors/mh/MHY_Scanner创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表