android - usar - Uso de correo electrónico y contraseña para autenticarse a través de la API REST
como usar el correo electronico hotmail (5)
Me preguntaba si es posible autenticarte en la API REST de Firebase sin usar la autenticación personalizada .
He trabajado con Firebase ahora por un tiempo y actualmente estoy pensando en migrar un backend mío a Firebase. La aplicación que utiliza el backend actualmente usa una API REST y no necesita datos en tiempo real. Por lo tanto, me gustaría usar solo la API REST y no el marco completo de Android en los clientes.
¿Es posible obtener un token de autenticación utilizando la autenticación de correo y contraseña de Firebase a través de solicitudes HTTP?
En los documentos antiguos solo he encontrado una solución con inicio de sesión personalizado y en los nuevos documentos parece que necesita una cuenta de servicio de Google.
Cualquier ayuda o consejo será apreciado.
Actualización: la autenticación REST de Firebase ahora está documentada.
Autenticación REST de Firebase
Descubrí cómo realizar la autenticación de correo electrónico y contraseña para Firebase al examinar las solicitudes enviadas por la API de Javascript.
Estas API no están documentadas y no son compatibles
Firebase 3
La autenticación de Firebase 3 es una versión actualizada y renombrada de Google Identity Toolkit. La documentación anterior no es completamente precisa, pero puede ser útil y se puede encontrar aquí: https://developers.google.com/identity/toolkit/web/reference/
Firebase 3 requiere que todas las solicitudes tengan Content-Type: application/json
en el encabezado
Clave API
Firebase 3 requiere una clave API para adjuntar a todas las solicitudes de autenticación. Puede encontrar la clave API para su base de datos visitando la descripción general del proyecto Firebase y haciendo clic en "Agregar Firebase a su aplicación web". Debería ver una ventana con un código como el siguiente:
<script src="https://www.gstatic.com/firebasejs/live/3.0/firebase.js"> </script>
<script>
// Initialize Firebase
var config = {
apiKey: "<my-firebase-api-key>",
authDomain: "my-firebase.firebaseapp.com",
databaseURL: "https://my-firebase.firebaseio.com",
storageBucket: "my-firebase.appspot.com",
};
firebase.initializeApp(config);
</script>
Copie el valor de la clave de acceso y guárdelo para más adelante.
Registro
Método: POST
URL: https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=<my-firebase-api-key>
Carga útil:
{
email: "<email>",
password: "<password>",
returnSecureToken: true
}
Respuesta:
{
"kind": "identitytoolkit#SignupNewUserResponse",
"localId": "<firebase-user-id>", // Use this to uniquely identify users
"email": "<email>",
"displayName": "",
"idToken": "<provider-id-token>", // Use this as the auth token in database requests
"registered": true,
"refreshToken": "<refresh-token>",
"expiresIn": "3600"
}
Iniciar sesión
Método: POST
URL: https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=<my-firebase-api-key>
Carga útil:
{
email: "<email>",
password: "<password>",
returnSecureToken: true
}
Respuesta:
{
"kind": "identitytoolkit#VerifyPasswordResponse",
"localId": "<firebase-user-id>", // Use this to uniquely identify users
"email": "<email>",
"displayName": "",
"idToken": "<provider-id-token>", // Use this as the auth token in database requests
"registered": true,
"refreshToken": "<refresh-token>",
"expiresIn": "3600"
}
Obtenga información de la cuenta
Método: POST
URL: https://www.googleapis.com/identitytoolkit/v3/relyingparty/getAccountInfo?key=<my-firebase-api-key>
Carga útil:
{
idToken: "<provider-id-token>"
}
Respuesta:
{
"kind": "identitytoolkit#GetAccountInfoResponse",
"users": [
{
"localId": "<firebase-user-id>",
"email": "<email>",
"emailVerified": false,
"providerUserInfo": [
{
"providerId": "<password>",
"federatedId": "<email>",
"email": "<email>",
"rawId": "<email>"
}],
"passwordHash": "<hash>",
"passwordUpdatedAt": 1.465327109E12,
"validSince": "1465327108",
"createdAt": "1465327108000"
}]
}
Firebase 2
Estas solicitudes devuelven datos JSON descritos en los documentos de Firebase. https://www.firebase.com/docs/web/guide/login/password.html#section-logging-in
Iniciar sesión
Puede autenticarse enviando una solicitud GET con el siguiente formato:
https://auth.firebase.com/v2/<db_name>/auth/password?&email=<email>&password=<password>
Registro
La creación del usuario también se puede realizar enviando la misma solicitud GET con _method=POST
como parte de la cadena de consulta
https://auth.firebase.com/v2/<db_name>/users?&email=<email>&password=<password>&_method=POST
Creo que puedes hacer una de las siguientes cosas:
Conecte su aplicación web a Firebase, su API REST se encargará de la autenticación al recibir las credenciales del usuario, luego se autenticará con Firebase a través de las API web Autenticación de contraseña
Utilice el SDK del servidor de Firebase para generar firebase.google.com/docs/auth/server#create_a_custom_token , el token será un token web JSON (JWT) .
También hay proyectos en GitHub para generar tokens de Firebase:
De la autenticación de Firebase Guide con Firebase en sitios web mediante un sistema de autenticación personalizado (consulte https://firebase.google.com/docs/auth/web/custom-auth )
Puede integrar Firebase Authentication con un sistema de autenticación personalizado modificando su servidor de autenticación para producir tokens firmados personalizados cuando un usuario inicie sesión con éxito. Su aplicación recibe este token y lo usa para autenticarse con Firebase.
Aquí está la idea clave:
1) Agregue Firebase a su proyecto web y use Firebase REST JavaScript SDK para la autenticación, y acceda a Storage / Realtime Database con Firebase.
// TODO: Replace with your project''s customized code snippet
<script src="https://www.gstatic.com/firebasejs/3.0.2/firebase.js"></script>
<script>
// Initialize Firebase
var config = {
apiKey: ''<your-api-key>'',
authDomain: ''<your-auth-domain>'',
databaseURL: ''<your-database-url>'',
storageBucket: ''<your-storage-bucket>''
};
firebase.initializeApp(config);
</script>
2) Los usuarios de la aplicación inician sesión en su servidor de autenticación usando su nombre de usuario y contraseña. Su servidor verifica las credenciales y devuelve un token personalizado si son válidas.
3) Después de recibir el token personalizado de su servidor de autenticación, páselo a signInWithCustomToken para iniciar sesión en el usuario
firebase.auth().signInWithCustomToken(token).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});
Necesita la devolución de un Token una vez que se autentica con su correo electrónico y contraseña, de acuerdo con la documentación que puede devolver el token de un usuario con getToken(opt_forceRefresh)
, está disponible en la siguiente URL.
https://firebase.google.com/docs/reference/js/firebase.User#getToken
Si intenta a través de REST API que tiene que hacer todas las operaciones en su aplicación .
Solo toma los datos json y verifica tu autenticación o no .
usa el método de actualización de Get y solo toma todos los datos de tu aplicación de Firebase .
esta es mi publicación Rerofit + Firebase que me enviaron para que el principiante comprenda la conexión de firebase y Retrofit.
O
Por favor revisa estos enlaces para ayudarte .....................
disfrutar de la codificación .......