很多新手在使用Telegram开发或第三方工具时,会遇到需要填写“API ID”、“API Hash”或“申请URL”的情况。尤其是想自己搭建机器人、使用Telegram客户端库(如Telethon、Pyrogram)或者接入官方API时,往往卡在第一步:不知道去哪里申请,或者申请过程中遇到各种报错。本教程将手把手带你走完整个申请流程,从准备条件到拿到可用的API URL和密钥,并附上常见问题的解决方法。
申请前准备:确保你拥有一个可用的Telegram账号
在申请API之前,必须先确认你有一个能正常登录的Telegram账号,并且该账号没有被官方限制过API权限。如果你使用的是中国大陆手机号注册的账号,建议提前准备好稳定的网络环境(如代理),因为申请页面需要访问my.telegram.org,该域名在国内可能无法直接访问。
登录Telegram官方开发者平台
具体操作说明:
打开浏览器,访问 my.telegram.org。在页面中央你会看到一个登录框,输入你的手机号码(格式需包含国家代码,例如中国手机号输入+86 138xxxxxxx),点击 Next。随后Telegram App会收到一条登录验证码,将验证码输入网页上的输入框,点击 Sign In即可成功登录。
注意事项/小提示:
- 确保你的Telegram App处于在线状态,否则可能收不到验证码。
- 如果收不到验证码,可以尝试点击 Resend code重新发送,或检查代理是否影响了Telegram的推送。
- 登录后如果页面跳转失败,请检查浏览器是否拦截了弹窗,建议使用Chrome或Edge浏览器。
备用方案:
- 如果my.telegram.org无法打开,尝试更换代理节点或使用无痕模式访问。
- 部分网络环境可能需要将代理设置为全局模式,而非仅代理浏览器。
创建新应用以获取API ID和API Hash
具体操作说明:
登录成功后,页面会显示 App configuration或 Create new application按钮。点击 Create new application,在弹出的表单中填写以下信息:
- App title:给你的应用起个名字(例如“MyTestBot”)。
- Short name:简短名称(例如“testbot”)。
- Platform:选择 Other(除非你开发的是iOS或Android原生应用)。
- Description:简单描述用途(例如“用于学习Telegram API”)。
填写完成后,点击 Create application按钮。几秒后页面刷新,你会看到 App configuration区域显示 App api_id和 App api_hash两串字符,这就是你需要的核心密钥。
注意事项/小提示:
- App title和Short name不能与已有应用重复,建议使用独特的名字。
- 每个Telegram账号最多可以创建10个应用,如果达到上限需要删除旧应用才能新建。
- api_id和api_hash是敏感信息,请勿公开分享或上传到公开代码仓库。
备用方案:
- 如果创建按钮灰色无法点击,请检查是否所有必填字段都已填写完整。
- 如果提示“You have already registered an app”,说明你的账号已创建过应用,可以直接使用已有的api_id和api_hash。
获取API授权URL(OAuth URL)
具体操作说明:
API授权URL通常用于OAuth登录流程,让用户通过Telegram账号授权第三方应用。要生成授权URL,你需要使用上一步获取的 api_id和 api_hash,拼接以下格式的链接:
https://my.telegram.org/auth?to=你的api_id
注意:这个URL仅用于官方开发者平台的授权验证,并非真正的OAuth授权地址。真正的Telegram OAuth授权URL格式为:
https://oauth.telegram.org/auth?bot_id=你的机器人ID&origin=你的网站域名&redirect_uri=你的回调地址
对于普通开发者,更常用的方式是使用Telegram Login Widget,在网页中嵌入登录按钮。你可以在 my.telegram.org的 App configuration页面下方找到 Telegram Login设置,点击 Set up后,按提示输入你的网站域名,系统会生成一段嵌入代码和对应的授权URL。
注意事项/小提示:
- 如果你不需要OAuth授权,只想用API ID和Hash直接调用Telegram客户端API(如发送消息、管理群组),则不需要申请授权URL,直接使用api_id和api_hash配合代码库即可。
- 授权URL中的 origin必须与你网站的实际域名完全一致,包括协议(http/https)和端口号。
- 如果使用本地开发环境,可以将域名临时设为
localhost或127.0.0.1,但正式上线时必须改为真实域名。
备用方案:
- 如果无法生成授权URL,可以尝试使用第三方库(如Python的
telethon)自带的授权流程,它会自动处理URL生成和验证码输入。 - 对于机器人开发,授权URL不是必需的,机器人通过Bot Token即可工作,无需OAuth流程。
验证API密钥是否可用
具体操作说明:
打开一个支持Telegram API的代码环境(如Python的交互式终端),安装一个Telegram客户端库(例如 pip install telethon)。然后运行以下测试代码(请将api_id和api_hash替换为你自己的值):
`python
from telethon import TelegramClient
api_id = 123456 # 替换为你的api_id
api_hash = 'your_api_hash_here' # 替换为你的api_hash
client = TelegramClient('session_name', api_id, api_hash)
async def main():
await client.start()
me = await client.get_me()
print(f'登录成功,用户: {me.first_name}')
with client:
client.loop.run_until_complete(main())
`
如果代码运行后打印出你的用户名,说明API密钥有效,并且授权URL(如果需要)也是正确的。如果遇到报错,请检查网络连接或密钥是否正确。
注意事项/小提示:
- 首次运行上述代码时,Telegram会要求输入手机号和验证码,这是正常的授权流程。
- 如果提示
AUTH_KEY_UNREGISTERED,说明api_id或api_hash错误,请返回my.telegram.org重新核对。 - 测试完成后,建议删除生成的
.session文件,以免泄露会话信息。
备用方案:
- 如果不熟悉Python,也可以使用Postman或curl直接调用Telegram API的
getMe接口进行测试,但需要先通过OAuth获取用户授权。 - 更简单的验证方式:在my.telegram.org的 App configuration页面,点击 Test按钮(如果有),系统会模拟一次API调用。
常见问题补充
问:申请API时提示“The number is not registered in Telegram”怎么办?
答:这说明你的手机号没有注册Telegram账号,请先下载Telegram App并完成注册。注意,部分虚拟号码或网络电话号段可能无法注册。
问:我申请到了api_id和api_hash,但代码一直报“Flood wait”错误?
答:这是Telegram的速率限制,说明你的请求频率过高。建议在每次API调用之间添加至少1秒的延迟,或者使用官方推荐的sleep策略。如果频繁触发,可能需要等待数小时后再尝试。
问:授权URL中的bot_id如何获取?
答:bot_id就是你的机器人的数字ID,可以通过向BotFather发送 /mybots查看,或者通过机器人API的 getMe接口返回的 id字段获取。
问:为什么我生成的授权URL无法跳转?
答:请检查URL中的参数是否完整,特别是redirect_uri必须与你在my.telegram.org上配置的回调地址完全一致(包括大小写和路径)。另外,确保你的网站已经部署并支持HTTPS(Telegram要求生产环境使用HTTPS)。
总结:
申请Telegram API的核心流程是登录my.telegram.org → 创建应用获取api_id和api_hash → 根据需求生成授权URL或直接使用密钥调用API,整个过程需要确保网络畅通、账号有效且密钥保密。