PHP开发Telegram机器人:如何在inline_keyboard中使用login_url?
解决Telegram机器人inline_keyboard中login_url不生效的问题
核心原因:未配置授权域名
Telegram对login_url有严格的域名限制,只能跳转到预先在BotFather中授权的域名,这是按钮失效最常见的原因。
解决步骤:
在BotFather中配置允许的域名
- 打开Telegram,与
@BotFather发起对话 - 发送命令
/setdomain - 选择你要配置的机器人
- 输入需要授权的域名(如
example.com,无需带http://或https://,子域名需完整填写,如sub.example.com)
- 打开Telegram,与
验证代码结构与JSON输出
- 你的代码中
login_url的结构是正确的,但可以打印$replyMarkup确认JSON格式是否正常:
正确的JSON输出应该类似:echo $replyMarkup;{"inline_keyboard":[{"text":"Text","login_url":{"url":"https://example.com"}}]} - 如果JSON存在不必要的转义,可修改
json_encode的参数:$replyMarkup = json_encode($keyboard, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
- 你的代码中
额外注意事项
login_url仅支持inline键盘,你的代码使用inline_keyboard是符合要求的- 确保域名的SSL证书有效(
https协议),Telegram不允许login_url跳转到未加密的http链接
内容的提问来源于stack exchange,提问作者user2549947
相关产品推荐
相关产品推荐

