初始身份验证:在python

时间:2015-04-26 15:07:02

标签: python authentication telegram

我已经下载了电子邮件的CLI版本(https://telegram.org/)。从以下位置下载了该CLI界面的非完整版本: https://github.com/griganton/telepy

现在验证总体上运行正常,但实际功能正在进行中。

所以我改变了一点JASON-Scheme并添加了初始身份验证所需的功能

{'id': '1988976461',
 'method': 'sendCode',
 'params': [{'name': 'phone_number', 'type': 'string'},
            {'name': 'sms_type', 'type': 'int'},
            {'name': 'api_id', 'type': 'int'},
            {'name': 'api_hash', 'type': 'string'},
            {'name': 'lang_code', 'type': 'string'}],
 'type': 'SentCode'}

如文档中所述 https://core.telegram.org/method/auth.sendCode

现在我不这样做之后,通过文档看来,在发送请求短信代码的消息后,我应该收到auth.SentCode,并在数据包的开头添加十六进制代码{{1} },但我收到的是来自服务器的响应,0xEFED51D9类型的内容似乎与我的请求无关。

这一切看起来都非常烦人和奇怪,我不知道是什么原因导致我所有人都遵循文档并尝试按要求实现。

我发送的数据包看起来很好,我实际上将SmsCode发送到我的手机..但我得到的反应很糟糕\由于某种原因不清楚。

我正在调用JSON中实现的函数,如下所示:

msg_container73f1f8dc

所以它正在运作..但我需要 auth = Session.method_call('sendCode', phone_number=PHONE_NUMBER, sms_type=0, api_id=MY_API_ID, api_hash=MY_API_HASH, lang_code="en") 。请注意,出于某种原因,Telegram本身的文档也很奇怪。看一下他们给出的查询示例,这些数字与文档所说的不匹配(引自他们的文档):

查询示例:

phone_code_hash

取自此处:https://core.telegram.org/method/auth.sendCode

每个部分的预期第一个DWORD应该是不同的.. 例如:(auth.sendCode "79991234567" 1 32 "test-hash" "en") = (auth.sentCode phone_registered:(boolFalse) phone_code_hash:"2dc02d2cda9e615c84" ) d16ff372 3939370b 33323139 37363534 00000001 00000020 73657409 61682d74 00006873 e77e812d = 2215bcbd bc799737 63643212 32643230 39616463 35313665 00343863 e12b7901 而不是768d5f4d ..

那我缺少什么?

一些参考(出于某种原因,如果我不把它作为代码部分,它不会让我发布这个)

d16ff372

2 个答案:

答案 0 :(得分:0)

问题是插槽的处理不好......服务器只发送了两个数据包。

第一个数据包是Message_Service,第二个数据包是我真正想要的数据..

它很奇怪,因为它没有在文档中对这些消息说什么

答案 1 :(得分:0)

电报大多数时候都会将消息打包成一个msg_container。

例如,您可能会获得以前消息的Msg_acks以及上一条消息的预期响应。

您最好的选择是设置代码来处理收到的容器的情况,检查容器中的项目数,然后遍历收到的消息,将不同的消息类型传递给适当的处理程序。

另请注意,您可能会收到包含gzip压缩消息的rpc_response,在这种情况下,您需要解压缩,然后处理可能还包含消息集合的消息内容

欢呼声