如何进行Telegram MTProto协议API呼叫?

时间:2015-05-18 17:28:51

标签: c# telegram mtproto

例如,调用/包装auth.sentCode方法(下面的链接):

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

我试过了:

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

我得到了这个异常(和内部异常)

  

基础连接已关闭:发生意外错误   发送。 (身份验证失败,因为远程方已关闭   传输流。)

3 个答案:

答案 0 :(得分:2)

您开始使用this SO post

您需要先了解如何生成 AuthKey

Telegram-API文档编写得不是很好,但如果你继续学习它......你最终会掌握它。

通过生成AuthKey可以帮助您构建一个模式和函数,然后可以使用它来处理API的其余部分

干杯。

答案 1 :(得分:1)

如果您尝试通过Web浏览器访问https://149.154.167.40,则可以看到未启用https协议。如果您查看here,有一个实施https的子域列表,您可以尝试其中一个来发出api请求。由于CROSS-ORIGIN策略,我不确定电报会阻止您的请求,因为响应中存在access-control-allow-origin:*标头。如果这不起作用,您可以实现自己的握手,就像Android应用程序在here中所做的那样。我希望这能帮到你。

答案 2 :(得分:1)

使用TLSharp。要对用户进行身份验证,只需运行此代码

即可
   var hash = await client.SendCodeRequest(phoneNumber);

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

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