Нет доступных учетных данных при получении учетных данных от Passkeys ⇐ Android
Нет доступных учетных данных при получении учетных данных от Passkeys
Я успешно создал устройство с паролем в Google и создал учетные данные (блокировку экрана), которые можно увидеть в «Диспетчере паролей» в разделе «Управление учетной записью Google».
Для создания учетных данных я использую следующий код.
val createPublicKeyCredentialResponse = CredentialManager .create(контекст) .createCredential( контекст = контекст, запрос = createPublicKeyCredentialRequest, ) И результат createPublicKeyCredentialResponse выглядит следующим образом:
{ "rawId": "", "authenticatorAttachment": "платформа", "тип": "открытый ключ", "id": "", "ответ": { "clientDataJSON": "", "attestationObject": "", "транспорт": [ "внутренний", "кабель" ] }, "clientExtensionResults": { "credProps": { «рк»: ложь } } } Однако я не могу получить учетные данные с помощью следующего кода:
val getCredentialRequest = GetCredentialRequest(requestChallengeResponse) val getCredentialResponse = CredentialManager .create(контекст) .getCredential(контекст, getCredentialRequest) И getCredentialRequest выглядит так:
{ "публичный ключ": { "rpId": "", "challenge": "", «тайм-аут»: 60000, "userVerification": "обязательно", "allowCredentials": [ { "id": "", "type": "открытый ключ" } ] } } Я улавливаю исключение GetCredentialException при вызове getCredential(context, getCredentialRequest):
androidx.credentials.Exceptions.NoCredentialException: учетные данные недоступны в androidx.credentials.CredentialProviderFrameworkImpl.convertToJetpackGetException $credentials_release(CredentialProviderFrameworkImpl.kt:276) в androidx.credentials.CredentialProviderFrameworkImpl$onGetCredential$outcome$2.onError(CredentialProviderFrameworkImpl.kt:152) в androidx.credentials.CredentialProviderFrameworkImpl$onGetCredential$outcome$2.onError(CredentialProviderFrameworkImpl.kt:143) в android.credentials.CredentialManager$GetCredentialTransport.lambda$onError$2(CredentialManager.java:694) в android.credentials.CredentialManager$GetCredentialTransport.$r8$lambda$nlbYav9mLBoE6Yh1vFKCvITF3ks (неизвестный источник: 0) в android.credentials.CredentialManager$GetCredentialTransport$$ExternalSyntheticLambda2.run (неизвестный источник:6) в androidx.credentials.CredentialManager$$ExternalSyntheticLambda0.execute (неизвестный источник: 0) в android.credentials.CredentialManager$GetCredentialTransport.onError(CredentialManager.java:693) в android.credentials.IGetCredentialCallback$Stub.onTransact(IGetCredentialCallback.java:123) в android.os.Binder.execTransactInternal(Binder.java:1344) в android.os.Binder.execTransact(Binder.java:1275) Я использовал способ, аналогичный кодовой лаборатории диспетчера учетных данных. И я также проверил запрос и ответ на вход в пример приложения. Мои запросы и ответы схожи. А пример приложения Codelab отлично работает как в эмуляторе, так и на физическом устройстве. Однако я могу успешно создать учетные данные и не могу получить учетные данные.
Я успешно создал устройство с паролем в Google и создал учетные данные (блокировку экрана), которые можно увидеть в «Диспетчере паролей» в разделе «Управление учетной записью Google».
Для создания учетных данных я использую следующий код.
val createPublicKeyCredentialResponse = CredentialManager .create(контекст) .createCredential( контекст = контекст, запрос = createPublicKeyCredentialRequest, ) И результат createPublicKeyCredentialResponse выглядит следующим образом:
{ "rawId": "", "authenticatorAttachment": "платформа", "тип": "открытый ключ", "id": "", "ответ": { "clientDataJSON": "", "attestationObject": "", "транспорт": [ "внутренний", "кабель" ] }, "clientExtensionResults": { "credProps": { «рк»: ложь } } } Однако я не могу получить учетные данные с помощью следующего кода:
val getCredentialRequest = GetCredentialRequest(requestChallengeResponse) val getCredentialResponse = CredentialManager .create(контекст) .getCredential(контекст, getCredentialRequest) И getCredentialRequest выглядит так:
{ "публичный ключ": { "rpId": "", "challenge": "", «тайм-аут»: 60000, "userVerification": "обязательно", "allowCredentials": [ { "id": "", "type": "открытый ключ" } ] } } Я улавливаю исключение GetCredentialException при вызове getCredential(context, getCredentialRequest):
androidx.credentials.Exceptions.NoCredentialException: учетные данные недоступны в androidx.credentials.CredentialProviderFrameworkImpl.convertToJetpackGetException $credentials_release(CredentialProviderFrameworkImpl.kt:276) в androidx.credentials.CredentialProviderFrameworkImpl$onGetCredential$outcome$2.onError(CredentialProviderFrameworkImpl.kt:152) в androidx.credentials.CredentialProviderFrameworkImpl$onGetCredential$outcome$2.onError(CredentialProviderFrameworkImpl.kt:143) в android.credentials.CredentialManager$GetCredentialTransport.lambda$onError$2(CredentialManager.java:694) в android.credentials.CredentialManager$GetCredentialTransport.$r8$lambda$nlbYav9mLBoE6Yh1vFKCvITF3ks (неизвестный источник: 0) в android.credentials.CredentialManager$GetCredentialTransport$$ExternalSyntheticLambda2.run (неизвестный источник:6) в androidx.credentials.CredentialManager$$ExternalSyntheticLambda0.execute (неизвестный источник: 0) в android.credentials.CredentialManager$GetCredentialTransport.onError(CredentialManager.java:693) в android.credentials.IGetCredentialCallback$Stub.onTransact(IGetCredentialCallback.java:123) в android.os.Binder.execTransactInternal(Binder.java:1344) в android.os.Binder.execTransact(Binder.java:1275) Я использовал способ, аналогичный кодовой лаборатории диспетчера учетных данных. И я также проверил запрос и ответ на вход в пример приложения. Мои запросы и ответы схожи. А пример приложения Codelab отлично работает как в эмуляторе, так и на физическом устройстве. Однако я могу успешно создать учетные данные и не могу получить учетные данные.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Ошибка проверки rpId в PoC Passkeys на Android с использованием Jetpack Compose
Anonymous » » в форуме Android - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-