2015-05-18 17 views
8

Ad esempio per chiamare/avvolgere il (link sotto) auth.sentCode Metodo:Come si effettua una chiamata all'API del protocollo MTProto Telegram?

https://core.telegram.org/method/auth.sendCode

ho provato:

var url = "https://149.154.167.40"; 
var data = "(auth.sendCode \"PHONE_CODE+NO\" 0 APP_ID \"SECRET_HASH\" \"en\")"; 
using (var wc = new WebClient()) 
{ 
var result = wc.UploadData(url, GetBytes(data)); 
} 

ottengo questa eccezione (e l'eccezione interna)

La connessione sottostante è stata chiusa: si è verificato un errore imprevisto su a invio. (L'autenticazione non è riuscita perché la parte remota ha chiuso il flusso di trasporto.)

+0

Non ho esperienza con questo protocollo, ma la maggior parte delle volte vedo eccezioni come quella che è un problema SSL/TLS. Vedo che stai utilizzando un IP codificato: è possibile che ci siano certificati autofirmati che la tua app sta rifiutando? (In alternativa: questo endpoint supporta sicuramente https? Ho ricevuto errori simili dall'invio di richieste https a un endpoint http.) –

+1

Penso che finora nessun esempio, solo libim non implementato al githhub –

+0

Ho postato del codice (in vb.net) per iniziare qui http://stackoverflow.com/a/32809138/44080 –

risposta

2

È una iniziare con this SO post

Si avrebbe bisogno di capire come generare un authkey prima.

La documentazione di Telegram-API non è molto ben scritta, ma se continui a studiarla ... alla fine ce la fai.

Lavorando attraverso la generazione del authkey aiuterebbe a costruire un modello e le funzioni che è possibile utilizzare per affrontare il resto della API

Cin cin.

1

Se si tenta di accedere a https://149.154.167.40 da un browser web, si può vedere che il protocollo HTTPS non è abilitato. Se si guarda here, esiste un elenco di sottodomini che implementa https, è possibile provare uno di quelli per effettuare la richiesta API. Non sono sicuro che il telegramma bloccherà la tua richiesta a causa della politica CROSS-ORIGIN, perché l'intestazione access-control-allow-origin:* è presente nella risposta. Se ciò non funziona, è possibile implementare la propria stretta di mano come fa l'applicazione Android in here. Spero che questo ti sia d'aiuto.

1

Utilizzare TLSharp. Per autenticare l'utente, basta eseguire questo codice

var hash = await client.SendCodeRequest(phoneNumber); 

    var code = "1234"; //code that you receive from Telegram 

    var user = await client.MakeAuth(phoneNumber, hash, code);