Mise à jour : L'authentification Firebase REST est maintenant documentée!
Voir la documentation
Authentification Firebase REST
J'ai découvert comment effectuer une authentification par email et mot de passe pour Firebase en examinant les requêtes envoyées par l'API Javascript.
Ces API ne sont pas documentées et ne sont pas prises en charge
Firebase 3
L'authentification Firebase 3 est une version mise à jour et renommée du Google Identity Toolkit. L'ancienne documentation n'est pas entièrement précise, mais peut être utile et se trouve ici : https://developers.google.com/identity/toolkit/web/reference/
Firebase 3 exige que toutes les requêtes aient Content-Type: application/json
dans l'en-tête
Clé API
Firebase 3 exige qu'une clé API soit attachée à toutes les requêtes d'authentification. Vous pouvez trouver la clé API pour 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 un code comme celui-ci :
// 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);
Copiez la valeur de apiKey et enregistrez-la pour plus tard.
Inscription
Méthode : POST
URL : https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=
Charge utile :
{
email: "",
password: "",
returnSecureToken: true
}
Réponse :
{
"kind": "identitytoolkit#SignupNewUserResponse",
"localId": "", // Utilisez ceci pour identifier de manière unique les utilisateurs
"email": "",
"displayName": "",
"idToken": "", // Utilisez ceci comme jeton d'authentification dans les requêtes de base de données
"registered": true,
"refreshToken": "",
"expiresIn": "3600"
}
Connexion
Méthode : POST
URL : https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=
Charge utile :
{
email: "",
password: "",
returnSecureToken: true
}
Réponse :
{
"kind": "identitytoolkit#VerifyPasswordResponse",
"localId": "", // Utilisez ceci pour identifier de manière unique les utilisateurs
"email": "",
"displayName": "",
"idToken": "", // Utilisez ceci comme jeton d'authentification dans les requêtes de base de données
"registered": true,
"refreshToken": "",
"expiresIn": "3600"
}
Obtenir des informations sur le compte
Méthode : POST
URL : https://www.googleapis.com/identitytoolkit/v3/relyingparty/getAccountInfo?key=
Charge utile :
{
idToken: ""
}
Réponse :
{
"kind": "identitytoolkit#GetAccountInfoResponse",
"users": [
{
"localId": "",
"email": "",
"emailVerified": false,
"providerUserInfo": [
{
"providerId": "",
"federatedId": "",
"email": "",
"rawId": ""
}],
"passwordHash": "",
"passwordUpdatedAt": 1.465327109E12,
"validSince": "1465327108",
"createdAt": "1465327108000"
}]
}
Firebase 2
Ces requêtes renvoient des données JSON décrites dans la documentation Firebase. https://www.firebase.com/docs/web/guide/login/password.html#section-logging-in
Connexion
Vous pouvez vous authentifier en envoyant une requête GET avec le format suivant :
https://auth.firebase.com/v2//auth/password?&email=&password=
Inscription
La création d'utilisateur peut également être effectuée en envoyant la même requête GET avec _method=POST
dans la chaîne de requête
https://auth.firebase.com/v2//users?&email=&password=&_method=POST
2 votes
Aucun des SDKs de firebase.com ni de firebase.google.com ne vous permet de créer un jeton via son API REST. Vous devrez mettre en place un serveur/point de terminaison qui crée le jeton, par exemple avec l'une des bibliothèques prises en charge : firebase.google.com/docs/auth/server#create_a_custom_token.
0 votes
@FrankvanPuffelen Bonjour Frank, merci d'avoir pris le temps de répondre. Comme l'a mentionné nloewen ci-dessous et comme je le pensais moi-même, vous utilisez sûrement également des requêtes HTTP dans vos SDK. Il doit donc y avoir une façon de le faire, même si ce n'est pas officiellement pris en charge. Mais je vais également jeter un coup d'œil à la génération de jeton personnalisée, merci.