Je me demandais s'il est possible de réellement authentifier auprès de Firebase API REST sans en utilisant l'authentification personnalisée ?
Je travaille avec Firebase depuis un certain temps et je pense actuellement à migrer un de mes backends vers Firebase. L'application qui utilise le backend utilise actuellement une API REST et n'a pas du tout besoin de données en temps réel. Je voudrais donc utiliser uniquement l'API REST et pas le cadre complet Android sur les clients.
Est-il possible d'obtenir un jeton d'authentification en utilisant l'authentification mail et mot de passe de Firebase via des requêtes HTTP?
Dans les anciens documents je n'ai trouvé qu'une solution avec une connexion personnalisée et dans les nouveaux documents vous semblez avoir besoin d'un compte de service Google.
Toute aide ou conseil est appréciée.
J'ai compris comment effectuer une authentification par e-mail et mot de passe pour Firebase en examinant les demandes envoyées par l'API Javascript.
Ces API ne sont pas documentées et ne sont pas prises en charge
L'authentification Firebase 3 est une version mise à jour et renommée de Google Identity Toolkit. L'ancienne documentation n'est pas entièrement exacte, mais peut être utile et peut être trouvée ici: https://developers.google.com/identity/toolkit/web/reference/
Firebase 3 requiert que toutes les demandes aient Content-Type: application/json
dans l'en-tête
Firebase 3 nécessite qu'une clé API soit attachée à toutes les demandes d'authentification. Vous pouvez trouver la clé API de votre base de données en visitant l'aperçu du projet Firebase et en cliquant sur "Ajouter Firebase à votre application web". Vous devriez voir une fenêtre avec du code comme celui-ci:
<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>
Copiez la valeur apiKey et enregistrez-la pour plus tard.
Méthode: POST
URL: https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=<my-firebase-api-key>
Charge utile:
{
email: "<email>",
password: "<password>",
returnSecureToken: true
}
Réponse:
{
"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"
}
Méthode: POST
URL: https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=<my-firebase-api-key>
Charge utile:
{
email: "<email>",
password: "<password>",
returnSecureToken: true
}
Réponse:
{
"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"
}
Méthode: POST
URL: https://www.googleapis.com/identitytoolkit/v3/relyingparty/getAccountInfo?key=<my-firebase-api-key>
Charge utile:
{
idToken: "<provider-id-token>"
}
Réponse:
{
"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"
}]
}
Ces demandes renvoient les données JSON décrites dans les documents Firebase. https://www.firebase.com/docs/web/guide/login/password.html#section-logging-in
Vous pouvez vous authentifier en envoyant une demande GET au format suivant:
https://auth.firebase.com/v2/<db_name>/auth/password?&email=<email>&password=<password>
La création d'utilisateurs peut également être effectuée en envoyant la même demande GET avec _method=POST
dans le cadre de la chaîne de requête
https://auth.firebase.com/v2/<db_name>/users?&email=<email>&password=<password>&_method=POST
À partir du guide Firebase Authentifiez-vous avec Firebase sur des sites Web à l'aide d'un système d'authentification personnalisé (veuillez consulter https://firebase.google.com/docs/auth/web/custom-auth )
Vous pouvez intégrer l'authentification Firebase à un système d'authentification personnalisé en modifiant votre serveur d'authentification pour produire des jetons signés personnalisés lorsqu'un utilisateur se connecte avec succès. Votre application reçoit ce jeton et l'utilise pour s'authentifier auprès de Firebase.
Voici l'idée clé:
1) Ajoutez Firebase à votre projet Web et utilisez Firebase REST SDK JavaScript pour l'authentification, et accédez à la base de données de stockage/temps réel avec 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) Les utilisateurs de l'application se connectent à votre serveur d'authentification à l'aide de leur nom d'utilisateur et de leur mot de passe. Votre serveur vérifie les informations d'identification et renvoie un jeton personnalisé si elles sont valides.
3) Après avoir reçu le jeton personnalisé de votre serveur d'authentification, transmettez-le à signInWithCustomToken pour vous connecter à l'utilisateur
firebase.auth().signInWithCustomToken(token).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});
Si vous essayez l'API REST , vous devez effectuer toutes les opérations dans votre application .
Saisissez simplement les données json et vérifiez votre authentification ou non .
utilisez la méthode Get retrofit et récupérez simplement toutes les données de votre application firebase .
c'est mon article Rerofit + Firebase que j'ai posté pour que le débutant comprenne la connexion entre firebase et Retrofit.
[~ # ~] ou [~ # ~]
Veuillez passer par ces liens, ça va vous aider .....................
profitez du codage .......
Vous avez besoin du retour d'un jeton une fois que vous vous authentifiez avec votre e-mail et votre mot de passe, selon la documentation que vous pouvez renvoyer le jeton d'un utilisateur avec getToken(opt_forceRefresh)
, est disponible à l'URL suivante.
https://firebase.google.com/docs/reference/js/firebase.User#getToken
Je pense que vous pouvez effectuer l'une des actions suivantes:
Connectez votre application Web à Firebase, votre REST API gérera l'authentification en recevant les informations d'identification de l'utilisateur, puis en s'authentifiant avec Firebase via Authentification par mot de passe des API Web
Utilisez le SDK du serveur Firebase pour générer jetons d'authentification personnalisés , le jeton sera un jeton Web JSON (JWT) .
Il existe également des projets sur GitHub pour générer des jetons Firebase: