Wie implementiere ich die Autorisierung mit einer Telegramm-API?

Ich möchte mehrere Berechtigungen mit PHP für die Interaktion mit der Telegram REST-API implementieren.

Welche Aufgabe versuche ich zu lösen? Nun, es ist ganz einfach: Mehrere Dutzend Benutzer (alle haben ein Carma wie hier (+10, -2, +1000 usw.) mit relevanter Gruppentaxonomie: Webmaster und Kunden) haben ein Benutzerprofil auf meiner Website. Nachdem sie eine bestimmte Menge an Carma erreicht haben und in ihrem Profil autorisiert sind, werden sie zu privaten Chats hinzugefügt, die auf dem für sie automatisch generierten Telegramm basieren.

ach einigen Recherchen stellte ich fest, dass es sehr kompliziert ist, wei

Ich habe noch nie Erfahrung mit der API-Implementierung für hardware-gebundene soziale Netzwerke gesammelt.

Ich habe einen Blick aufhttps: //core.telegram.org/api/aut, aber es ist völlig unklar, wie diese Funktionen (zum Beispiel auth.sendCode) mit PHP oder einer anderen Sprache implementiert werden. Wenn diese Befehle als JSON an den Server gesendet werden sollen, sieht es nicht wie JSON aus:

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

Was ist es? In welcher Sprache ist es geschrieben?

UPD: Es ist in TL (Type Language) geschrieben:https: //core.telegram.org/mtproto/T

Ich habe den Quellcode mehrerer Clients (Webogram, Telegram-cli (tg), tdesktop) untersucht und mehrere Implementierungen von @ gefundehttps: //core.telegram.org/mtprot

eider unterstützt keiner von ihnen mehrere Autorisierungen auf seiner Seite, und nach ein wenig Recherche habe ich keine Ahnung, wo ich tiefer graben soll, um weitere Informationen zu erhalte

Auch diese Implementierungen sehen umfangreich und komplex aus (z. B.https: //github.com/vysheng/t):

Dort sehe ich ein paar Server (./tg/tgl/tgl.h)

#define TG_SERVER_1 "149.154.175.50"
#define TG_SERVER_2 "149.154.167.51"
#define TG_SERVER_3 "149.154.175.100"
#define TG_SERVER_4 "149.154.167.91"
#define TG_SERVER_5 "149.154.171.5"

Ich habe mehrere möglicherweise geeignete Funktionen gefunden (./tg/tgl/queries.c)

void empty_auth_file (void) {
  if (TLS->test_mode) {
    bl_do_dc_option (TLS, 1, "", 0, TG_SERVER_TEST_1, strlen (TG_SERVER_TEST_1), 443);
    bl_do_dc_option (TLS, 2, "", 0, TG_SERVER_TEST_2, strlen (TG_SERVER_TEST_2), 443);
    bl_do_dc_option (TLS, 3, "", 0, TG_SERVER_TEST_3, strlen (TG_SERVER_TEST_3), 443);
    bl_do_set_working_dc (TLS, TG_SERVER_TEST_DEFAULT);
  } else {
    bl_do_dc_option (TLS, 1, "", 0, TG_SERVER_1, strlen (TG_SERVER_1), 443);
    bl_do_dc_option (TLS, 2, "", 0, TG_SERVER_2, strlen (TG_SERVER_2), 443);
    bl_do_dc_option (TLS, 3, "", 0, TG_SERVER_3, strlen (TG_SERVER_3), 443);
    bl_do_dc_option (TLS, 4, "", 0, TG_SERVER_4, strlen (TG_SERVER_4), 443);
    bl_do_dc_option (TLS, 5, "", 0, TG_SERVER_5, strlen (TG_SERVER_5), 443);
    bl_do_set_working_dc (TLS, TG_SERVER_DEFAULT);
  }
}

void bl_do_dc_option (struct tgl_state *TLS, int id, const char *name, int l1, const char *ip, int l2, int port) {
  struct tgl_dc *DC = TLS->DC_list[id];
  if (DC && !strncmp (ip, DC->ip, l2)) { return; }

  clear_packet ();
  out_int (CODE_binlog_dc_option);
  out_int (id);
  out_cstring (name, l1);
  out_cstring (ip, l2);
  out_int (port);

  add_log_event (TLS, packet_buffer, 4 * (packet_ptr - packet_buffer));
}

etc

Welche Dateien sollte ich für die Implementierung der Mehrbenutzerauthentifizierung nach PHP übertragen? Könnten Sie mir bitte helfen, zu wissen, wo ich anfangen soll und wie ich es einfacher machen kann, als es derzeit ist?

Danke im Voraus

Antworten auf die Frage(8)

Ihre Antwort auf die Frage