Я пытаюсь запустить демонстрацию для 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 никогда не доставляется на мой телефон.
Одной из возможных проблем может быть то, что мой номер уже зарегистрирован как телефон приложения (связанный с учетной записью администратора), поэтому, поскольку (согласно документам) каждый номер телефона должен однозначно идентифицировать пользователя, возможно, мой номер уже был зарегистрирован для этого приложения и, следовательно, Не нужно было отправлять новый токен. В этом случае идентификатор объекта пользователя может быть ранее зарегистрированным.
Однако проблема остается с другими номерами телефонов. Так что теперь я потерялся.
Оказывается, в самом коде не было ничего плохого.
Просто API Sandbox на самом деле не проходит отправку СМС. Он только моделирует процесс в целях тестирования, поэтому процесс аутентификации такой же, как и в производственном API.
Когда я переключился на производственный API URL и ключ, я смог получить SMS на свой телефон.
Guybrush
Две вещи вызывают у вас отсутствие смс.
https://docs.authy.com/totp.html#requesting-sms-codes
Однако это поведение может быть отменено.
Таким образом, ваш окончательный код будет;
$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")); }
Саймон
$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();
}