How does one make a Telegram MTProto protocol api call?
Asked Answered
H

3

10

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.)

Hosfmann answered 18/5, 2015 at 17:28 Comment(3)
I have no experience with this protocol, but most of the time I see exceptions like that it's an SSL/TLS issue. I see you're using a hard-coded IP - is it possible there's self-signed certificates that your app is rejecting? (Alternatively: does that endpoint definitely support https? I've gotten similar errors from sending https requests to an http endpoint.)Gauldin
i think till now no example, just unimplemented lib's at githhubOke
I have posted some code (in vb.net) to get you started here https://mcmap.net/q/302695/-how-to-implement-authorization-using-a-telegram-apiFlann
F
5

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.

Flann answered 30/9, 2015 at 18:1 Comment(0)
L
1

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.

Leid answered 30/5, 2015 at 18:22 Comment(0)
R
1

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); 
Rexrexana answered 18/2, 2016 at 8:19 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.