回复 telegram.org API 中的 new_session_created 条消息

Responding to new_session_created messages in the telegram.org API

在我的电报客户端中,我经历了看似典型的创建有效会话的过程:

  1. 随机生成session_id
  2. 创建授权密钥
  3. getNearestDc
  4. 调用 initConnection
  5. 切换到最近的DC,这涉及到一个新的随机session_id和 auth_key
  6. 尝试 sendCode 命令,这会导致另一个切换到 正确的 DC

在此过程中的不同时间点,我从服务器收到指示状态的 MessageContainersMsgAcks 等。这是预期的,我现在正在正确解码它们。其中一些消息的类型为 new_session_created,如下所示:

{'msg': {u'new_session_created': {u'first_msg_id': 6327252208304908288L, u'unique_id': -4911750325772918873L, u'server_salt': 6799011375684265530L}}, 'seqno': 1, 'msg_id': 6327252210221112321L}

我当前的 server_salt 与此消息中的不同。我需要改用新盐吗? unique_id 是我的新 session_id 还是忽略这些消息?

解决所有这些问题后,下次客户端启动时我需要保存会话的哪一部分? session_id, auth_key, auth_key_id?

保存并重新使用您刚刚收到的新盐,用于本次会话中的下一个请求。

要进行后续登录,您只需要 session_idrecent_saltauth_key

Auth_key_id 是根据 auth_key 计算得出的,因此您可以选择存储它,也可以不选择存储它