Как отправить токен пользователя по SMS с Authy и PHP?

Я пытаюсь запустить демонстрацию Authy на PHP. Я установил библиотеку Authy с помощью Composer, поэтому теперь я могу зарегистрировать пользователя, используя жестко запрограммированные значения, например:

$authy_api = new Authy\AuthyApi('<TESTING API KEY>', 'http://sandbox-api.authy.com'); // actual key omitted -- using the key generated for testing, not the one for production

$user = $authy_api->registerUser('[email protected]', '999-999-9999', 30); // actual credentials omitted

if($user->ok()){
    echo "Success!";
    $id = $user->id();
    echo($id);  
}

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

Одна из возможных проблем может заключаться в том, что мой номер уже зарегистрирован как телефон приложения (связанный с учетной записью администратора), поэтому, поскольку (согласно документам) каждый номер телефона должен однозначно идентифицировать пользователя, возможно, мой уже был зарегистрирован для этого приложения и, следовательно, не возникло необходимости отправлять новый токен. В этом случае идентификатор пользовательского объекта может быть ранее зарегистрированным.

Однако проблема остается с другими телефонными номерами. Так что теперь я потерялся.


person Guybrush Threepwood    schedule 31.10.2015    source источник


Ответы (2)


Гайбраш

Отсутствие SMS у вас вызывает две причины.

  1. Ваш пример кода предназначен только для регистрации пользователя. Затем вам нужно вызвать второй API для отправки SMS.

https://docs.authy.com/totp.html#requesting-sms-codes

  1. Однако приведенный выше вызов API может не привести к отправке SMS. Вы действительно правы в том, что тот факт, что номер ячейки, которую вы используете, связан с вашим приложением Authy, по умолчанию не будет вызывать SMS-сообщение. Идея здесь в том, что, поскольку клиенты Authy должны платить за SMS-сообщения поверх транзакции Authy, тем пользователям с мобильным приложением SMS не требуется.

Однако это поведение можно изменить.

Итак, ваш окончательный код:

$authy_api = new Authy\AuthyApi('<TESTING API KEY>', 'http://sandbox-api.authy.com'); // actual key omitted -- using the key generated for testing, not the one for production

$user = $authy_api->registerUser('[email protected]', '999-999-9999', 30); // actual credentials omitted

if($user->ok()){  
    echo "Success!";
    $id = $user->id();
    echo($id);  

    // Now send SMS, force sending a message even if the user has the Authy mobile app installed
   $sms = $authy_api->requestSms('authy-id', array("force" => "true"));    }

Саймон

person Simon Thorpe    schedule 02.11.2015

Оказывается, в коде как таковом не было ничего плохого.

Просто API Sandbox на самом деле не отправляет SMS. Он моделирует процесс только для целей тестирования, поэтому процесс аутентификации такой же, как и в производственном API.

Когда я переключился на URL-адрес и ключ производственного API, я смог получить SMS на свой телефон.

person Guybrush Threepwood    schedule 07.11.2015