问题描述
我正在处理我的电报客户端,首先我需要添加电报授权。这是我如何实现它的代码:
async def get_telegram_client(session: str = None) -> TelegramClient:
return TelegramClient(
StringSession(session),api_id=settings.TELEGRAM_API_ID,api_hash=settings.TELEGRAM_API_HASH
)
@router.post('/code')
async def send_authorizarion_code(payload: TelegramSendCode):
client = await get_telegram_client()
await client.connect()
try:
await client.send_code_request(payload.phone)
except FloodWaitError as e:
return {
'FloodWaitError': {
'phone_number': e.request.phone_number,'seconds': e.seconds
}}
else:
return {
'msg': 'code sent','session': client.session.save()
}
@router.post('/auth')
async def authorize(payload: TelegramAuth):
client = await get_telegram_client(payload.session)
await client.connect()
await client.send_code_request(payload.phone)
await client.sign_in(code=payload.code,phone=payload.phone)
return {'msg': 'signed in'}
但问题是 sign_in() 方法需要先调用 send_code_request() 方法,因此在端点 authorize() 中我在同一个会话中第二次调用它 => 用户将收到 2 个相同的代码.
如何在 2 个 API 端点中编写电报授权流程,并且在 sign_in() 之前不执行 send_code_request() 方法?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)