当前位置:  开发笔记 > 编程语言 > 正文

为电报API创建授权密钥后的步骤

如何解决《为电报API创建授权密钥后的步骤》经验,为你挑选了1个好方法。

我一直在困扰于实现Telegram API的C#版本,但是我陷入了困境。我已经成功地弄清楚了如何创建授权密钥,但是我不知道从哪里可以找到。创建授权密钥后,有人知道下一步吗?该文档是如此难以遵循。

供参考:Telegram API

注意:我没有使用Bot API。我正在尝试使用常规API。



1> Charles Okwu..:

创建您的Auth_key之后,我发现最简单的方法是在继续之前确保已连接到最近的数据中心。另外,您还应该发送一个InitConnection命令以及您的代码将要使用的当前层(API版本)。

这是我发送的示例:

msg = TL.invokewithlayer(@layer,TL.initconnection(@app_id,@device_model,@system_version,@app_version,@lang_code,TL.help_getnearestdc))

现在,在发送此信息之前,请先了解更多背景信息:

1)Telegram服务器以TL进行通信,这基本上是一种定制开发的编码方案,Telegram使用它来表达一切:从命令到所有类型。您将需要构建自己的解码器和编码器,以将原始字节转换为TL,反之亦然。

2)Telegram会不时更新其API版本,但其网站上的版本已过时。您可以轻松获得其官方开源项目的最新API规范。尤其是Webogram中的this和this对于生成自己的TL分析器非常有用。当前图层版本为45

3)因此,当您发送init +最近的请求时,这很可能是您的第一个MTproto加密消息,因此您需要创建一个新的随机64位数字作为会话密钥,但是您还需要一个有效的server_salt ...

4)您在创建Auth_Key时可能已跳过此步骤,但是您可以从此创建有效的初始server_salt:

server_salt = substr(new_nonce, 0, 8) XOR substr(server_nonce, 0, 8)

您可以在此处查找:STEP 9)DH密钥交换完成

5)现在您有了server_salt,一个新的随机64位session_id,并且要发送以下内容:

msg = TL.invokewithlayer(@layer,TL.initconnection(@app_id,@device_model,@system_version,@app_version,@lang_code,TL.help_getnearestdc))

MTProto格式为:auth_id + msg_key + enc_payload

enc_payload = AES_IGE_enc(有效载荷)

有效负载=盐+ session_id + msg_id + seq_no + len(msg)+ msg +填充

你可以从这里得到以上

6)现在您期望得到一个告诉您最近的dc_id的结果,如果这与dc_id = 2不同(通常dc_id = 2是您开始的默认值),则需要断开连接并启动与新dc_id的新连接并重新生成连接到此新DC的auth_key。您的dc_ids指向电报数据中心IP地址列表['149.154.175.50', '149.154.167.51', '149.154.175.100', '149.154.167.91', '149.154.171.5']

7)连接到正确的“最近直流”后,您现在就可以执行“ 用户授权”,以使用您的新电报客户端授权(您的)手机号码访问电报

8)您发送给电报的所有后续消息将使用相同的session_id和salt发送,并按照之前的MTProto加密步骤进行发送

9)请注意,盐通常只持续24小时就可以了。服务器将向您发送新的盐,您可以用它来替换过期的盐。session_id通常是长期存在的。

10)一旦掌握了这几个步骤,就可以尝试发送消息或获取联系人列表和消息历史记录

干杯。

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有