Я реализовал двухфакторную аутентификацию с использованием TOTP с QR-кодом в Java, которая прекрасно работает на Android. Тем не менее, я получаю очень странную ошибку, когда пытаюсь отсканировать QR-код на любом устройстве iOS, и до сих пор не смог найти причину этого.
Возможно, проблема возникает из-за плохого кодирования, что недопустимо в iOS-версии приложения Google Authenticator, но это только предположение.
Я получаю сообщение об ошибке:
штрих-код не является допустимым штрих-кодом токена аутентификации
Вот код
public String generateQRUrl() {
String secret = "hXYmnYsVWoEAXjKuAZcj";
String QR_PREFIX = "https://chart.googleapis.com/chart?chs=200x200&chld=M%%7C0&cht=qr&chl=";
try {
return QR_PREFIX + URLEncoder.encode(
String.format("otpauth://totp/%s:%s?secret=%s&issuer=%s",
"Test X", "test@gmail.com", secret, "Issuer Y"),"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "";
}
Я испробовал несколько различных комбинаций для URLEncoder, ни одна из которых до сих пор не работала. На мой взгляд, iOS-приложение не любит какие-то специальные символы, как это предлагается в этой ветке C # ( click ), но кто-нибудь знает, как решить эту проблему?
Спасибо!