《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的Telegram是一款专注于速度和安全性的消息传递应用程序,它超快、简单且免费。
我们欢迎所有开发者使用我们的 API 和源代码在我们的平台上创建应用程序。
创建您的电报应用程序
我们欢迎所有开发者使用我们的API和源代码在我们的平台上免费创建类似 Telegram 的消息应用程序。
获取 api_id
为了获取API id并使用 Telegram API 开发您自己的应用程序,您需要执行以下操作:
我们将向您在此过程中使用的电话号码发送重要的开发者通知,因此请使用连接到您的有效 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 密码,而不发送任何授权码。
否则,系统将使用以下逻辑发送授权码:
代码类型
系统会自动选择授权码的发送方式;代码可以通过多种可能的方式到达:
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 解码。
该方法可能返回的错误是:
该方法将返回一个授权对象,其中包含有关我们刚刚授权的应用程序和会话的信息。
确认(导入)登录令牌
登录的应用程序调用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
留言与评论(共有 0 条评论) “” |