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

Telethon调用sign_in如何传递phone_code_hash解决对应ValueError报错

Telethon 登录报错解决方案

错误原因

  • 你在获取phone_code_hash后重复实例化了TelegramClient,新实例无法继承旧实例的请求上下文,导致phone_code_hash失效
  • 调用client.sign_in()方法时没有传入必填的phone_code_hash参数
  • 额外冗余问题:你连续调用了两次send_code_request,属于无效重复请求,会提高触发风控的概率

修正后代码

from telethon.sync import TelegramClient
from telethon.tl.functions.messages import GetDialogsRequest
from telethon.tl.types import InputPeerEmpty

api_id = XXXXXXX
api_hash = 'XXXXXXXXXXXXXXXXXXXXXXXX'
phone = '+XXXXXXXXXXX'

# 全程复用同一个client实例,不要重复创建
client = TelegramClient(phone, api_id, api_hash)

client.connect()
if not client.is_user_authorized():
    # 仅请求一次验证码,拿到返回结果中的phone_code_hash
    send_code_resp = client.send_code_request(phone)
    phone_code_hash = send_code_resp.phone_code_hash
    # 调用sign_in时传入三个必填参数:手机号、验证码、phone_code_hash
    client.sign_in(
        phone=phone,
        code=input('Enter the code: '),
        phone_code_hash=phone_code_hash
    )

# 后续可正常执行拉取会话、发消息等其他逻辑

补充说明

如果你的账号开启了两步验证,调用sign_in时还需要额外传入password参数,示例:

client.sign_in(
    phone=phone,
    code=input('Enter the code: '),
    phone_code_hash=phone_code_hash,
    password='你的两步验证密码'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:27:01