使用双因素身份验证在 Pyrogram 用户会话中进行身份验证

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

我有多个帐户和与其关联的机器人。我正在创建一个单独的机器人,我想在其中授权现有帐户作为用户会话,并与 BotFather 交互以收集有关哪些机器人与哪些帐户关联的信息、创建新的机器人等。 与授权帐户以及为帐户创建或重新连接会话(无需两步验证密码)相关的所有内容都可以正常工作,没有任何问题。 但是,如果在帐户上设置了两步验证密码,我将无法执行 session.sign_in() (当然使用正确的密码)。 机器人通过状态接收我发送的所有值,包括帐户密码(如果存在)。在伪代码中,它看起来像这样(数据是 FSM 字典;我只是不会将 async with state.proxy() 写为数据:):

data['number'] = message.text data['app_id'] = str(message.text) data['app_hash'] = message.text if message.text not in [0, "0"]: data['password'] = message.text app = Client(name=f"{data['number'].lstrip('+')}", api_id=data['app_id'], api_hash=data['app_hash'], password=data["password"]) else: app = Client(name=f"{data['number'].lstrip('+')}", api_id=data['app_id'], api_hash=data['app_hash']) await app.connect() client = weakref.WeakValueDictionary() client[data['number']] = app sent_code_obj = await app.send_code(current_data['number']) phone_hash = sent_code_obj.phone_code_hash data['phone_hash'] = phone_hash data['app'] = client await app.sign_in(phone_number=data['number'], phone_code_hash=data['phone_hash'], phone_code=message.text)

在这种情况下我得到了一个错误:

pyrogram.errors.exceptions.unauthorized_401.SessionPasswordNeeded: Telegram says: [401 SESSION_PASSWORD_NEEDED] - The two-step verification is enabled and a password is required (caused by "auth.SignIn")

我也在尝试类似的事情:

data['number'] = message.text data['app_id'] = str(message.text) data['app_hash'] = message.text if message.text not in [0, "0"]: data['password'] = message.text app = Client(name=f"{data['number'].lstrip('+')}", api_id=data['app_id'], api_hash=data['app_hash']) await app.check_password(password=data['password']) else: app = Client(name=f"{data['number'].lstrip('+')}", api_id=data['app_id'], api_hash=data['app_hash']) await app.connect() client = weakref.WeakValueDictionary() client[data['number']] = app sent_code_obj = await app.send_code(current_data['number']) phone_hash = sent_code_obj.phone_code_hash data['phone_hash'] = phone_hash data['app'] = client await app.sign_in(phone_number=data['number'], phone_code_hash=data['phone_hash'], phone_code=message.text)

在这种情况下,当我到达await app.check_password(password=data['password'])时,我收到一个错误:

The key is not registered in the system. Delete your session file and login again (caused by 'account.GetPassword')

问题是我做错了什么,我应该如何验证我自己的帐户,但要使用密码,通过将此密码输入我自己的机器人。

python telegram pyrogram
1个回答
0
投票

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