You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP开发Telegram机器人:如何在inline_keyboard中使用login_url?

解决Telegram机器人inline_keyboard中login_url不生效的问题

核心原因:未配置授权域名

Telegram对login_url有严格的域名限制,只能跳转到预先在BotFather中授权的域名,这是按钮失效最常见的原因。

解决步骤:

  1. 在BotFather中配置允许的域名

    • 打开Telegram,与@BotFather发起对话
    • 发送命令/setdomain
    • 选择你要配置的机器人
    • 输入需要授权的域名(如example.com,无需带http://或https://,子域名需完整填写,如sub.example.com)
  2. 验证代码结构与JSON输出

    • 你的代码中login_url的结构是正确的,但可以打印$replyMarkup确认JSON格式是否正常:
      echo $replyMarkup;
      
      正确的JSON输出应该类似:
      {"inline_keyboard":[{"text":"Text","login_url":{"url":"https://example.com"}}]}
      
    • 如果JSON存在不必要的转义,可修改json_encode的参数:
      $replyMarkup = json_encode($keyboard, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
      
  3. 额外注意事项

    • login_url仅支持inline键盘,你的代码使用inline_keyboard是符合要求的
    • 确保域名的SSL证书有效(https协议),Telegram不允许login_url跳转到未加密的http链接

内容的提问来源于stack exchange,提问作者user2549947

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:15:28