This说要获取用户 token ,我需要发送请求
auth.sentCode#efed51d9 phone_registered:Bool phone_code_hash:string send_call_timeout:int is_password:Bool = auth.SentCode;
某处?我已经读过它是一个MTProto请求,但是我不确定如何发送它。可以和邮递员一起发送吗?通过
teletgrambots
与rubenlagus
一起使用library吗? 最佳答案
电报协议
MTProto嵌入在传输协议(TCP,HTTP等)中,因此并非不可能使用Postman,但我确实很难做到(因此,这不是最佳选择)。
认为您的http调用必须实现 MTProto 2.0 ,因此您的http消息必须具有以下结构/格式:structure
参见schematic presentation of messages
只能将非常有限数量的特殊类型的消息作为纯文本进行传输。
电报机器人
关于 TelegramBots 是一个库,可帮助使用Telegram Bots Api构建Bot。
它支持两种技术:长轮询和 Webhook 。
该项目有一个很好的教程,您可以尝试:quickstart
另外,如果您是Spring Boot用户,那么它也具有 Spring Boot启动程序(spring boot starter)。
如何实现自己的身份验证客户端?
如果您想学习如何与电报api交互以进行身份验证,则需要阅读以下内容:auth section
之后,您可以了解如何与Telegram进行交互以进行身份验证...。我建议您阅读真实的应用程序如何使用Telegram API。
查看此示例实现中的Telegram Api的所有用法(对包类的引用:org.telegram.api.requests.TLRequestAuth *):
ActivationController impl
如上例所示,通常电报客户端使用TDLib。
基本上,Telegram提供两个API:
电报API和TDLib
使用此API,您可以构建自己的自定义电报客户端。它
对所有希望创建电报的开发人员开放100%
我们平台上的应用程序。随时学习开源代码
现有Telegram应用程序的示例,说明了工作原理
这里。不要忘记在我们的系统中注册您的应用程序。
Bot API
该API可让您将漫游器连接到我们的系统。电报机器人是
不需要设置其他电话号码的特殊帐户
向上。这些帐户用作运行在某处的代码的接口
您的服务器。
如果要创建或使用Telegram作为服务来发送和接收消息以及从服务器进行交互(不需要电话号码)... Bot API应该是您的选择。
如果您要创建自己的自定义电报应用程序(您的用户将需要一个电话号码来注册,就像在手机中使用电报一样)...电报API / TDLib应该是您的选择。
TDLib 是:
第三方开发人员可以轻松快速构建的工具,
安全且功能丰富的电报应用程序。 TDLib负责所有网络
实施细节,加密和本地数据存储,以便您
可以花更多时间进行设计,响应式界面和美观
动画。
TDLib支持所有电报功能并开发电报
在任何平台上都能轻松应用。它可以在Android,iOS,
Windows,macOS,Linux和几乎任何其他系统。图书馆是
开源并且几乎与任何编程语言兼容。
因此,您无需关心MTProtocol协议,网络,加密等底层细节。在这种情况下,您只需要使用TDLib。
我发送给您的示例类是Android的电报应用程序(telegram app)。它使用TDLib。
如果您想学习如何创建自己的TDLib ...源代码在这里:
tdlib source
它是用C语言开发的,可以与Java,.NET等一起使用。
基本上,它通过传输协议(http,tcp或udp)发送消息。例如。使用发布请求以上述MTProto格式提交消息的HTTP。消息用于编码。
有关MTProto支持的传输方式工作原理的文本:supported transports
其他参考:
电报API:Telegram APIs
TDLib:TDLib
Java中TDLib用法示例
Java示例存储库:TDLib example client
就像我说的那样,TDLib是用C语言开发的,因此您需要使用JNI(Java本机接口)与其进行交互。因此,您需要编译TDLib(使用cmake)。
TDLib应该预先构建以与Java一起使用并安装到本地
子目录
td/
如下:cd <path to TDLib sources>
mkdir jnibuild
cd jnibuild
cmake -DCMAKE_BUILD_TYPE=Release -DTD_ENABLE_JNI=ON -DCMAKE_INSTALL_PREFIX:PATH=../example/java/td ..
cmake --build . --target install
如果您想使用MSVC在Windows上为64位Java编译TDLib,
您还需要将
-A x64
选项添加到CMake。在Windows中,通过添加参数来使用Vcpkg工具链文件
-DCMAKE_TOOLCHAIN_FILE = / scripts / buildsystems / vcpkg.cmake
然后,您可以构建以下示例:
cd <path to TDLib sources>/example/java
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DTd_DIR=<full path to TDLib sources>/example/java/td/lib/cmake/Td -DCMAKE_INSTALL_PREFIX:PATH=.. ..
cmake --build . --target install
编译后的TDLib共享库和Java示例将是
放在bint和Javadoc文档的
docs/
中。cd <path to TDLib sources>/example/java/bin
java '-Djava.library.path=.' org/drinkless/tdlib/example/Example
如果您从CMake中收到“找不到JNI ...”错误,则需要
指定到已安装JDK的CMake路径,例如,
“-DJAVA_HOME = / usr / lib / jvm / java-8-oracle /”。
如果您收到带有“找不到依赖项”的java.lang.UnsatisfiedLinkError
库”,您可能还需要复制一些相关的共享OpenSSL
和zlib库到
bin/
。如果您将示例编译为32位版本,则可能需要
将-d32参数提供给Java。
如果要使用IntelliJ之类的IDE打开或将以下示例导入您的项目,请查看有关该示例的票证:how to use IntelliJ with TDLib
尝试运行示例!非常简单,它只有三个Java类(Example,Client和Log)。
客户端:使用“本机”方法与TDLib进行交互。
示例:使用客户端的应用程序。
例如。查看如何发送授权请求:
auth request