6 votes

Telegram MTProto Java : comment obtenir un jeton d'utilisateur ?

Le présent indique que pour obtenir le jeton d'un utilisateur, je dois envoyer une requête

auth.sentCode#efed51d9 phone_registered:Bool phone_code_hash:string send_call_timeout:int is_password:Bool = auth.SentCode;

quelque part ? J'ai lu qu'il s'agissait d'une requête MTProto, mais je ne sais pas comment l'envoyer. Est-il possible de l'envoyer avec Postman ? Avec teletgrambots bibliothèque par rubenlagus ?

9voto

Ariel Carrera Points 2188

Protocole Telegram

MTProto est intégré dans le protocole de transport (TCP, HTTP,...), il n'est donc pas impossible d'utiliser Postman mais c'est très difficile à faire (ce n'est donc pas la meilleure option). Pensez que votre appel http doit implémenter MTProto 2.0 Votre message http doit donc avoir cette structure/ce format : structure

  • 64-bit key_fingerprint
  • Clé mesg de 128 bits
  • données_chiffrées

Voir présentation schématique des messages

Seul un nombre très limité de messages de types particuliers peut être transmis en texte clair.

TelegramBots

A propos de TelegramBots est une librairie qui aide à construire un Bot en utilisant la méthode Telegram Bots Api .

Il prend en charge les deux techniques : Longs sondages y Crochet Web .

Le projet comporte un bon tutoriel que vous pouvez essayer : démarrage rapide

De plus, si vous êtes un utilisateur de Spring boot, il dispose d'une fonction Spring Boot starter aussi ( démarreur à botte de ressort .

Comment mettre en œuvre votre propre client d'authentification ?

Si vous voulez apprendre à interagir avec l'api de Telegram pour vous authentifier, vous devez lire ceci : section authentification

Ensuite, vous pourrez comprendre comment interagir avec Telegram pour vous authentifier... Je vous suggère de lire comment une application réelle utilise l'API de Telegram. Regardez toutes les utilisations de l'Api Telegram dans cet exemple d'implémentation (références aux classes du package : org.telegram.api.requests.TLRequestAuth*) :

Implantation d'un contrôleur d'activation

Comme vous pouvez le voir dans l'exemple ci-dessus, les clients télégrammes utilisent généralement TDLib.

Telegram propose deux API :

API Telegram et TDLib

Cette API vous permet de créer vos propres clients Telegram personnalisés. Elle est ouverte à 100 % à tous les développeurs qui souhaitent créer des clients Telegram. est 100% ouverte à tous les développeurs qui souhaitent créer des applications Telegram sur notre plateforme. N'hésitez pas à étudier le code source ouvert des applications Telegram existantes pour voir comment les choses fonctionnent ici. ici. N'oubliez pas d'enregistrer votre application dans notre système.

API pour les robots

Cette API vous permet de connecter des robots à notre système. Les bots Telegram sont des comptes spéciaux qui ne r à mettre en place. Ces comptes servent d'interface pour un code s'exécutant quelque part sur sur votre serveur.

Si vous voulez créer ou utiliser Telegram comme un service pour envoyer et recevoir des messages et interagir à partir d'un serveur (sans avoir besoin d'un numéro de téléphone)... Bot API devrait être votre choix.

Si vous souhaitez créer votre propre application Telegram personnalisée (votre utilisateur aura besoin d'un numéro de téléphone pour s'enregistrer, comme celui qui utilise Telegram sur un téléphone portable)... L'API/TDLib Telegram devrait être votre choix.

TDLib est :

un outil pour les développeurs tiers qui facilite la construction sécurisées et riches en fonctionnalités. TDLib s'occupe de tous les détails du réseau, du chiffrement et du stockage local des données, afin que vous puissiez consacrer plus de temps à la conception, aux interfaces réactives et à la beauté des applications. consacrer plus de temps à la conception, aux interfaces réactives et aux belles animations.

TDLib prend en charge toutes les fonctionnalités de Telegram et fait du développement de Telegram sur n'importe quelle plateforme. Il peut être utilisé sur Android, iOS, Windows, macOS, Linux et pratiquement tout autre système. La bibliothèque est open source et compatible avec pratiquement tous les langages de programmation.

Vous n'avez donc pas besoin de vous occuper des détails de bas niveau tels que le protocole MTP, le réseau, le cryptage, etc. Dans ce cas, il vous suffit d'utiliser TDLib.

La classe d'exemple que je vous ai envoyée est une application Telegram pour Android ( application telegram ). Il utilise TDLib.

Si vous voulez apprendre à créer votre propre TDLib... la source est ici : tdlib source

Il est développé en C et peut être utilisé avec Java, .NET et d'autres.

Fondamentalement, il envoie des messages via un protocole de transport (http, tcp ou udp). Par exemple, pour http, l'utilisation d'une requête post pour soumettre des messages avec le format mentionné ci-dessus MTProto. Les messages doivent être encodés.

Texte sur le fonctionnement des transports pris en charge par MTProto : transports pris en charge

Autres références :

API de Telegram : API de Telegram TDLib : TDLib


Exemple d'utilisation de TDLib en Java

Répertoire d'exemples Java : Exemple de client TDLib

  1. Vérifier d'abord le repo de TDLib Repo TDLib Comme je l'ai dit, TDLib est développé en langage C, vous devez donc utiliser JNI (Java Native Interface) pour interagir avec lui. Vous devez donc compiler TDLib (avec cmake).

  2. Suivez les instructions de Example (readme.md) pour compiler/précompiler TDLib sur votre plateforme ( readme ).

TDLib doit être préconstruit pour être utilisé avec Java et installé dans le répertoire local local td/ comme suit :

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

Si vous souhaitez compiler TDLib pour Java 64 bits sous Windows à l'aide de MSVC, vous devrez également ajouter -A x64 à CMake.

Sous Windows, utilisez le fichier de la chaîne d'outils Vcpkg en ajoutant le paramètre -DCMAKE_TOOLCHAIN_FILE=/scripts/buildsystems/vcpkg.cmake

Vous pouvez ensuite construire cet exemple :

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

La bibliothèque partagée TDLib compilée et l'exemple Java seront ensuite placés dans bin/ et la documentation Javadoc dans docs/ .

  1. Vous pouvez ensuite exécuter l'exemple Java

    cd <path to TDLib sources>/example/java/bin java '-Djava.library.path=.' org/drinkless/tdlib/example/Example

Si vous obtenez l'erreur "Could NOT find JNI ..." de CMake, vous devez spécifier à CMake le chemin d'accès au JDK installé, par exemple, "-DJAVA_HOME=/usr/lib/jvm/java-8-oracle/".

Si vous obtenez une erreur java.lang.UnsatisfiedLinkError avec "Can't find dependent dépendantes", il se peut que vous deviez également copier certaines bibliothèques partagées OpenSSL et zlib dépendantes dans bin/ .

Si vous avez compilé l'exemple en version 32 bits, vous devrez peut-être de donner le paramètre -d32 à Java.

Si vous voulez ouvrir avec un IDE comme IntelliJ ou importer cet exemple dans votre projet, regardez ce ticket qui en parle : comment utiliser IntelliJ avec TDLib

Essayez d'exécuter l'exemple ! C'est très facile, il n'y a que trois classes Java (Exemple, Client et Log).

Client : Pour interagir avec TDLib avec des méthodes "natives".
Exemple : Application qui utilise le Client.

Par exemple, pour savoir comment envoyer une demande d'autorisation : demande d'authentification

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X