Telegram Passport Javascript SDK

问题描述 投票:0回答:2

我对 Telegram Bot API 有点陌生,在机器人中我想通过 Telegram Passport

验证用户的年龄

我正在尝试重新创建他们的 Javascript SDK。该按钮出现并打开 Telegram Passport,但我收到错误

Could not get authorization form. PUBLIC_KEY_REQUIRED

我已经插入了我的公钥,但仍然收到错误消息。如果有人可以复制他们的例子并告诉我我做错了什么,那将是一个很大的帮助。

javascript telegram
2个回答
1
投票

必须在 2 个地方提供公钥。

传递给 Telegram.Passport.createAuthButton 的

AuthParameters 对象的 public_key 属性应设置为您的公钥。 我假设您在声明插入公钥时执行了此操作。

您还必须使用 BotFather 为您的机器人设置公钥。 用于启动 BotFather 进程的命令是

/setpublickey。 当您输入该命令时,BotFather 会询问您该密钥应应用于哪个机器人,然后等待您将公钥粘贴到消息中。 如果一切顺利,BotFather 将回复“成功!公钥已更新。/help”。

当我将公钥放入 AuthParameters 时,我看到了与您描述的相同的错误消息,但未能将其上传到 BotFather。


0
投票

电报 发生错误:
PUBLIC_KEY_INVALID

除了来自的正确数据 @jwilliamson45

请注意如何放置

public_key

。这是一个适用于测试的示例,
由于
python-telegram-bot
的文档没有详细解释这一点,所以只是提到它(直到今天,2024年12月7日):

<?php $tg_passport = empty($_GET["tg_passport"])? "":$_GET["tg_passport"]; ?> <!DOCTYPE html> <html lang="en"> <head> <title> Telegram passport (test1) </title> <meta charset="utf-8"> <meta content="IE=edge" http-equiv="X-UA-Compatible"> <meta content="width=device-width, initial-scale=1" name="viewport"> </head> <body> <h1>Telegram passport (test1)</h1> <?php if ($tg_passport == "cancel") { echo "Canceled!"; } ?> <div id="telegram_passport_auth"></div> </body> <!--- Needs file from https://github.com/TelegramMessenger/TGPassportJsSDK downloaded ---> <script src="../telegram-passport.js"></script> <script src="../uuid.min.js"></script> <script> "use strict"; var host = "https://your-host.net" var nonce = uuid.v4(), callback_url = host+"/apps/telegram_passport_auth", files_base_url = callback_url+"/files", files_dir = callback_url+"/files_saved"; // Example of public key var p_k="-----BEGIN PUBLIC KEY-----\n"+ "MIIBIjANBC\n"+ "mPPAR7busb\n"+ "TmxT4yQswX\n"+ "2TLg46ccdi\n"+ "Tbam9PQiw4\n"+ "Sb7Tqii9xl\n"+ "QQIAB\n"+ "-----END PUBLIC KEY-----\n"; Telegram.Passport.createAuthButton('telegram_passport_auth', { // ROLL BOT: bot_id: 999999999, // WHAT DATA YOU WANT TO RECEIVE: scope: { data: [{ type: 'id_document', selfie: true }, 'address_document', 'phone_number', 'email'], v: 1 }, // YOUR PUBLIC KEY public_key: p_k, // YOUR BOT WILL RECEIVE THIS DATA WITH THE REQUEST nonce: nonce, // TELEGRAM WILL SEND YOUR USER BACK TO THIS URL callback_url: callback_url+"/?" }); </script> </html>

nonce

是使用uuid.min.js中的uuid.v4()生成的。

也许这个细节影响或不影响错误:

PUBLIC_KEY_REQUIRED

© www.soinside.com 2019 - 2024. All rights reserved.