Telegram の CLI バージョン ( https://telegram.org/ ) をダウンロードしました。その CLI インターフェイスのそれほど完全ではないバージョンは、 https ://github.com/griganton/telepy からダウンロードされました。
現在、認証はすべて正常に機能していますが、実際の機能はありません。
だから私はJASON-Schemeを少し変更し、初期認証に必要な機能を追加しました
{'id': '1988976461',
'method': 'sendCode',
'params': [{'name': 'phone_number', 'type': 'string'},
{'name': 'sms_type', 'type': 'int'},
{'name': 'api_id', 'type': 'int'},
{'name': 'api_hash', 'type': 'string'},
{'name': 'lang_code', 'type': 'string'}],
'type': 'SentCode'}
ドキュメント https://core.telegram.org/method/auth.sendCodeに書かれているとおり
ドキュメントによると、SMSコードを要求するメッセージを送信した後 auth.SentCode
、パケットの先頭にある16進コードで受信する必要があるよう0xEFED51D9
ですが、代わりにサーバーからの応答として何かを受信していますmsg_container73f1f8dc
私の要求にまったく関係がないように見えるタイプの。
これは全体として非常に面倒で奇妙に思えます。全体として、ドキュメントに従って、要求どおりに実装しようとした原因がわかりません。
私が送信しているパケットは問題ないように見え、実際に SmsCode を自分の電話に受け取ります..しかし、受け取った応答が悪い \ なんらかの理由で不明です。
JSON に実装された関数を次のように呼び出しています。
auth = Session.method_call('sendCode', phone_number=PHONE_NUMBER, sms_type=0, api_id=MY_API_ID, api_hash=MY_API_HASH, lang_code="en")
だからそれは機能しています..しかし、私は
phone_code_hash
. 何らかの理由で、Telegram 自体のドキュメントも奇妙であることに注意してください。彼らが提供したクエリの例を見ると、数値はドキュメントの内容と一致しません(ドキュメントから引用):
クエリの例:
(auth.sendCode "79991234567" 1 32 "test-hash" "en")
=
(auth.sentCode
phone_registered:(boolFalse)
phone_code_hash:"2dc02d2cda9e615c84"
)
d16ff372 3939370b 33323139 37363534 00000001 00000020 73657409 61682d74 00006873 e77e812d
=
2215bcbd bc799737 63643212 32643230 39616463 35313665 00343863 e12b7901
ここから取得: https://core.telegram.org/method/auth.sendCode
各部分で予想される最初の DWORD は異なる必要があります。例:768d5f4d
の代わりにd16ff372
..
それで、私は何が欠けていますか?
いくつかの参照(コードセクションとして配置しないと、何らかの理由でこれを投稿できません)
https://core.telegram.org/constructor/auth.sentCode
https://core.telegram.org/mtproto/service_messages
https://core.telegram.org/method/auth.sendCode