Telegram一款专注于速度和安全性的消息传递应用程序

Telegram一款专注于速度和安全性的消息传递应用程序

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的Telegram是一款专注于速度安全性消息传递应用程序,它超快、简单且免费。

我们欢迎所有开发者使用我们的 API 和源代码在我们的平台上创建应用程序。

  • 为您的应用程序获取您自己的 api_id。
  • 请不要为您的应用使用 Telegram 名称——或确保您的用户明白它是非官方的。
  • 请不要使用我们的标准徽标(蓝色圆圈中的白纸平面)作为您应用的徽标。
  • 请阅读我们的安全指南,并妥善保管您用户的数据和隐私。
  • 请记住也发布您的代码以遵守许可证。

入门

创建您的电报应用程序

我们欢迎所有开发者使用我们的API和源代码在我们的平台上免费创建类似 Telegram 的消息应用程序。

获取 api_id

为了获取API id并使用 Telegram API 开发您自己的应用程序,您需要执行以下操作:

  • 使用任何应用程序注册 Telegram。
  • 登录到您的 Telegram 核心:https ://my.telegram.org 。
  • 转到“API 开发工具”并填写表格。
  • 您将获得基本地址以及用户授权所需的api_id和api_hash参数。
  • 目前每个号码只能有一个 api_id 连接到它。

我们将向您在此过程中使用的电话号码发送重要的开发者通知,因此请使用连接到您的有效 Telegram 帐户的最新号码。

使用 api_id

在使用 MTProto Telegram API 之前,请注意所有 API 客户端库都受到严格监控以防止滥用。

如果您使用 Telegram API 进行泛滥、发送垃圾邮件、伪造订阅者和查看频道计数器,您将被永久禁止。

由于对 Telegram API 的过度滥用,所有使用非官方 Telegram API 客户端注册或登录的帐户都会被自动置于监控之下,以避免违反服务条款。

如果您没有违反服务条款,但您 的帐户在使用 API 后确实被禁止,请写信至recovery@telegram.org ,说明您打算如何使用 API,要求解除您的帐户。请注意,电子邮件由人工检查,因此将检测并禁止自动生成的电子邮件。

使用 Telegram 的开源代码

欢迎大家使用我们的开源代码。我们在代码中包含了一个示例 API id。此 API id 在服务器端受到限制,不适合发布给最终用户的应用程序 – 将其用于任何测试目的都会导致您的用户出现 API_ID_PUBLISHED_FLOOD 错误。在发布应用程序之前,您必须获取自己的 API id 。

用户授权

授权与客户端的加密密钥标识符相关联:auth_key_id。授权后无需将其他参数传递给方法

发送验证码

示例实现:用于 android 的电报,tdlib。

要显示格式良好且经过验证的电话号码字段,可以使用help.getCountriesList方法获取help.countriesList构造函数。 然后按照此处所述使用help.countriesList配置。

然后,使用auth.sendCode将包含授权码的短信发送到用户的手机。但是,如果使用注销令牌,情况并非总是如此:

注销令牌

在启用 2FA 的先前授权会话上调用auth.logOutfuture_auth_token时,服务器可能会返回 a ,它应该存储在本地数据库中。在任何时候,注销令牌数据库都应包含最多 20 个令牌:在添加新令牌时驱逐旧令牌。调用auth.sendCode时,应将数据库中存在的所有注销令牌提供给codeSettings.logout_tokens.如果任何注销令牌与我们尝试登录的帐户匹配并且令牌尚未过期,则 auth.sendCode将直接返回一个SESSION_PASSWORD_NEEDEDRPC 错误,直接要求用户输入 2FA 密码,而不发送任何授权码。

否则,系统将使用以下逻辑发送授权码:

代码类型

系统会自动选择授权码的发送方式;代码可以通过多种可能的方式到达:

  • 注销令牌
  • 电报代码
  • 短信代码
  • 电话:合成语音会告诉用户输入哪个验证码。
  • Flash电话:代码将通过Flash电话发送,该电话将立即关闭。在最后一种情况下,电话代码将是电话号码本身,只需确保电话号码与指定的模式匹配(请参阅auth.sentCodeTypeFlashCall)。
  • 未接电话:代码将通过闪电话发送,将立即关闭。呼叫的电话号码的最后一位是必须由用户手动输入的代码。

auth.sendCode方法还具有用于启用/禁用使用紧急呼叫和未接呼叫的参数,并允许传递将包含在已发送 SMS 中的 SMS 令牌。例如,在较新版本的 android 中需要后者,才能使用android SMS 接收器 API。

通过二维码登录

导出登录令牌

首先,要登录现有 Telegram 帐户的应用程序必须调用auth.exportLoginToken 。该方法将返回一个auth.loginToken构造函数,其中包含二进制登录token和到期日期(通常为 30 秒)。

登录token必须使用base64url进行编码,嵌入在tg://login?token=base64encodedtokenURL 中并以QR 码的形式显示给用户。当前二维码到期后,必须调用auth.exportLoginToken方法,并自动生成新的二维码。

接受登录令牌

为了登录,必须使用auth.acceptLoginToken由已登录的 Telegram 应用程序扫描并接受 QR 码。在方法中使用令牌之前,必须从tg://loginURI 中提取令牌并进行 base64url 解码。

该方法可能返回的错误是:

  • 400 -AUTH_TOKEN_INVALID提供了无效的授权令牌
  • 400 – AUTH_TOKEN_EXPIRED,提供的授权令牌已过期,必须重新扫描更新的二维码
  • 400 -AUTH_TOKEN_ALREADY_ACCEPTED授权令牌已被使用

该方法将返回一个授权对象,其中包含有关我们刚刚授权的应用程序和会话的信息。

确认(导入)登录令牌

登录的应用程序调用auth.acceptLoginToken并接受登录令牌后,尝试登录的应用程序将收到updateLoginToken更新,这将触发对auth.exportLoginToken方法 的第二次调用。

然后,第二次调用应该返回一个auth.loginTokenSuccess构造函数,指示登录成功,本质上允许与 API 进行进一步的授权交互。

但是,如果两个应用程序之间存在 DC 不匹配,则返回auth.loginTokenMigrateTo,尝试登录的应用程序应通过调用指定的auth.importLoginTokentoken来响应指定的 DC。

这个调用最终应该返回一个auth.loginTokenSuccess构造函数。

消息草稿

消息草稿

Telegram 中的消息草稿允许在设备之间同步输入到消息字段中的文本。

草稿

草稿由DraftMessage构造函数表示。在编写要发送给特定对等方的消息时,应使用特定对等草稿的参数作为默认值(在媒体的情况下,仍应使用相同的草稿作为基础,消息将成为标题)。如果用户在发送消息之前退出应用程序,则消息应保存为草稿:

保存草稿

可以使用messages.saveDraft方法保存草稿。

下载草稿

新草稿会通过updateDraftMessage更新自动发送到所有设备。

通过 API 获取的对话对象也包含与对话相关的草稿。

开源协议:GPL-2.0 license

开源地址:https://github.com/DrKLO/Telegram

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
上一篇 2022年6月17日 18:22
下一篇 2022年6月17日 18:22

相关推荐

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息