Estoy usando la API PasswordCredential en Google Chrome y Edge para almacenar las credenciales de autenticación, sin embargo, estos datos no se guardan.
Estoy usando el código a continuación, y solo lo disparo si mi inicio de sesión de AJAX es exitoso.
var cred = new PasswordCredential({ name: account, id: email, password: password, iconURL: 'https://example.com/favicon.ico' }); navigator.credentials.store(cred).then(() => { if (redirect !== undefined) { $window.location.href = 'dashboard.html'; } }); Si dentro de la función then del .store lo pongo para extraer los datos guardados, se muestran datos nulos.
navigator.credentials.store(cred).then(() => { navigator.credentials.get({ password: true }).then(function (auth) { console.log(auth); //Return NULL console.log(auth.password); //Returns that does not exist console.log(auth.id); //Returns that does not exist console.log(auth.name); //Returns that does not exist }); });¿Qué hice mal en mi código?
Editar
Creo que encontré el problema, como el usuario elige y no guarda las credenciales en el navegador, la promesa está pendiente. ¿Hay alguna forma de hacer esto automáticamente sin que el usuario tenga que guardar manualmente?
¿Y cómo manejo la promesa cuando se completa?
Según W3C , la API de la tienda devolverá la promesa para asegurarse de que haya enviado la solicitud adecuada al navegador o no, no dirá si se usa guardar o no. Si desea lograr esto, puede crear setInterval donde puede verificar regularmente llamando a get from store.
En Referencia para guardar, la promesa ya se muestra cumplida de la siguiente manera: