twilio — Как отправить токен пользователя через 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('something@something.com', '999-999-9999', 30); // actual credentials omitted

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

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

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

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

1

Решение

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

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

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

1

Другие решения

Guybrush

Две вещи вызывают у вас отсутствие смс.

  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('something@something.com', '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"));    }

Саймон

0

 $authy_api = new AuthyApi(AUTHY_API_KEY, "https://api.authy.com");
$user = $authy_api->registerUser($email, $phone_number, $country_code);   //// Register User
if($user->ok()) {
$sms = $authy_api->requestSms($user->id()); //// Send SMS
return $sms->ok();
}
0