How does one make a Telegram MTProto protocol api call?

7.1k Views Asked by At

For instance to call/wrap the auth.sentCode method (link below):

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

I have tried:

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));  
}  

I get this exception (and inner exception)

The underlying connection was closed: An unexpected error occurred on a send. (Authentication failed because the remote party has closed the transport stream.)

3

There are 3 best solutions below

0
On BEST ANSWER

You an get started with this SO post

You would need to understand how to generate an AuthKey first.

The Telegram-API documentation is not very well written, but if you keep studying it... you eventually get the hand of it.

Working through generating the AuthKey would help you build up a pattern and functions that you can then use to tackle the rest of the API

Cheers.

0
On

Use TLSharp. To authenticate user, just run this code

   var hash = await client.SendCodeRequest(phoneNumber);

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

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

If you try to access to https://149.154.167.40 via a Web Browser, you can see that the https protocol is not enabled. If you look at here, there are a list of subdomains that implements https, you could try one of those to make your api request. I'm not really sure that telegram blocks your request due to the CROSS-ORIGIN policy, because the access-control-allow-origin:* header is present in the response. If that doesn't work, you could implement your own handshake like the android application does in here. I hope this help you.