Как получить код подтверждения в Tdlib програмно?

Ссылка скопирована
1 ответ

я отправляю setTdlibParameters

$tdlib->send([     '@type' => 'setTdlibParameters',     'parameters' => [         'api_id' => (int)$api_id,         'api_hash' => (string)$api_hash,         'use_test_dc' => false,         'database_directory' => 'tdlib_database',         'files_directory' => 'tdlib/td',         'use_file_database' => false,         'use_chat_info_database' => false,         'use_message_database' => false,         'use_secret_chats' => true,         'system_language_code' => 'en',         'device_model' => php_uname('s'),         'system_version' => php_uname('v'),         'application_version' => '1.6.0',         'enable_storage_optimizer' => false,         'ignore_file_names' => false,         'log_verbosity_level' => 3      ] ]);

$tdlib->send([ '@type' => 'setTdlibParameters', 'parameters' => [ 'api_id' => (int)$api_id, 'api_hash' => (string)$api_hash, 'use_test_dc' => false, 'database_directory' => 'tdlib_database', 'files_directory' => 'tdlib/td', 'use_file_database' => false, 'use_chat_info_database' => false, 'use_message_database' => false, 'use_secret_chats' => true, 'system_language_code' => 'en', 'device_model' => php_uname('s'), 'system_version' => php_uname('v'), 'application_version' => '1.6.0', 'enable_storage_optimizer' => false, 'ignore_file_names' => false, 'log_verbosity_level' => 3 ] ]);

потом

$tdlib->send([     '@type' => 'checkDatabaseEncryptionKey',     'key' => '', ]);

$tdlib->send([ '@type' => 'checkDatabaseEncryptionKey', 'key' => '', ]);

статус становится authorizationStateWaitPhoneNumber
отправляю

$tdlib->send([     '@type' => 'setAuthenticationPhoneNumber',     'phone_number' => $phone_number ]);

$tdlib->send([ '@type' => 'setAuthenticationPhoneNumber', 'phone_number' => $phone_number ]);

и по идее мне должен прийти код в $tdlib->receive если $response['@type'] === 'updateAuthorizationState'
но он не приходит пишется вот так
Array
(
[@type] => updateAuthorizationState
[authorization_state] => Array
(
[@type] => authorizationStateWaitCode
[code_info] => Array
(
[@type] => authenticationCodeInfo
[phone_number] => +********
[type] => Array
(
[@type] => authenticationCodeTypeTelegramMessage
[length] => 5
)

[timeout] => 0
)

)

)
как же его получить кодом?
в сам телеграм мне он приходит
где то читал что должен быть $response['authorization_state']['code_info']['code']; но его не приходит

Дополнительно:

С некоторых пор SMS можно получить только при запросе из мобильного приложения, на десктопе или в собственном клиенте - только сообщение в уже ранее установленный клиент.

  • shurshur, про "или в собственном клиенте - только сообщение в уже ранее установленный клиент. " напишите пожалуйста подробнее, если у меня есть скрипт на PHP на обертке FfiTdLib то это клиент или вы имеете ввиду что то другое? если тоже клиент то как все таки его получить
  • Denis93, я лучше сразу финальный вывод скажу: нет, нельзя автоматизированно регистрировать аккаунты сейчас. Вообще. Можно только залогиниться в ранее созданный вручную аккаунт.

    Всё из-за нехороших людей, которые пачками спамботов регали.

  • shurshur, ну так я и авторизацию делаю на уже давно созданный свой аккаунт, номер в переменной руками прописан, api_id api_hash тоже но все равно не удается получить скриптом код подтверждения, и иногда просто уходит в таймаут
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Игорь Волков Ответ

    Для получения кода подтверждения в Tdlib программно можно воспользоваться следующими шагами:

    1. Установить Tdlib в ваш проект. Для этого можно воспользоваться сборкой Tdlib для вашего языка программирования (например, для PHP можно воспользоваться библиотекой tdlib/tdlib-php).

    2. Подключиться к серверу авторизации Tdlib. Для этого необходимо создать объект Tdlib и установить соединение с сервером авторизации.

    3. Запросить отправку кода подтверждения. Для этого необходимо вызвать метод sendPhoneNumberVerificationCode, передав в него ваш номер телефона.

    Пример кода на PHP:

    use td\telegram\TdClient;
     
    $tdClient = new TdClient();
    $tdClient->sendPhoneNumberVerificationCode('YOUR_PHONE_NUMBER');

    use td\telegram\TdClient; $tdClient = new TdClient(); $tdClient->sendPhoneNumberVerificationCode('YOUR_PHONE_NUMBER');

    4. Дождаться получения кода подтверждения. Теперь необходимо дождаться получения SMS с кодом подтверждения на ваш номер телефона.

    5. Подтвердить код. Как только вы получите код подтверждения, необходимо вызвать метод checkPhoneNumberVerificationCode, передав в него полученный код.

    Пример кода на PHP:

    use td\telegram\TdClient;
     
    $tdClient = new TdClient();
    $tdClient->checkPhoneNumberVerificationCode('YOUR_VERIFICATION_CODE');

    use td\telegram\TdClient; $tdClient = new TdClient(); $tdClient->checkPhoneNumberVerificationCode('YOUR_VERIFICATION_CODE');

    После выполнения этих шагов вы успешно получите код подтверждения в Tdlib программно. Не забудьте обработать возможные ошибки и исключения в вашем коде для достижения надежной и стабильной работы вашего приложения.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно