49 votes

Utilisation de l'e-mail et du mot de passe pour s'authentifier via l'API REST [Firebase]

Je me demandais s'il est possible de s'authentifier à l'API REST Firebase sans utiliser l'authentification personnalisée?

J'ai travaillé avec Firebase pendant un certain temps maintenant et je pense actuellement à migrer un de mes serveurs vers Firebase. L'application qui utilise actuellement le serveur utilise une API REST et n'a pas du tout besoin de données en temps réel. Ainsi, j'aimerais utiliser uniquement l'API REST et non le framework Android complet sur les clients.

Est-il possible d'obtenir un jeton d'authentification en utilisant l'authentification par e-mail et mot de passe de Firebase via des requêtes HTTP?

Dans les anciennes docs, j'ai seulement trouvé une solution avec une connexion personnalisée et dans les nouvelles docs, il semble que vous ayez besoin d'un compte de service Google.

Toute aide ou conseil est apprécié.

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.

68voto

nloewen Points 927

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

5 votes

Non pris en charge et susceptible de changer à tout moment, car ce sont des points de terminaison API internes.

1 votes

Même si ce n'est pas pris en charge, c'est exactement ce dont j'ai besoin en fait. Sauf que j'aurais besoin de quelque chose comme ça pour la nouvelle version de firebase. :/

2 votes

@Endzeit J'ai mis à jour ma réponse avec des informations sur l'authentification REST pour Firebase 3. Ce n'est pas une liste complète des opérations d'authentification, mais cela devrait vous aider à démarrer :) Si vous trouvez le format pour d'autres opérations, veuillez revenir et nous le faire savoir !

4voto

Chebyr Points 1216

De Firebase Guide Authentifier avec Firebase sur les sites Web en utilisant un système d'authentification personnalisé (Veuillez consulter https://firebase.google.com/docs/auth/web/custom-auth)

Vous pouvez intégrer l'authentification Firebase avec un système d'authentification personnalisé en modifiant votre serveur d'authentification pour produire des jetons personnalisés signés lorsque un utilisateur se connecte avec succès. Votre application reçoit ce jeton et l'utilise pour s'authentifier avec Firebase.

Voici l'idée principale :

1) Ajoutez Firebase à votre projet Web et utilisez le SDK JavaScript REST Firebase pour l'authentification, et accédez au Stockage / Base de données en temps réel avec Firebase.

  // À FAIRE : Remplacez par l'extrait de code personnalisé de votre projet

    // Initialiser Firebase
    var config = {
      apiKey: '<votre-clé-api>',
      authDomain: '<votre-domaine-auth>',
      databaseURL: '<votre-url-de-base-de-données>',
      storageBucket: '<votre-bucket-de-stockage>'
    };
    firebase.initializeApp(config);

2) Vos utilisateurs d'application se connectent à votre serveur d'authentification en utilisant leur nom d'utilisateur et mot de passe. Votre serveur vérifie les informations d'identification et renvoie un jeton personnalisé s'ils sont valides.

3) Après avoir reçu le jeton personnalisé de votre serveur d'authentification, transmettez-le à signInWithCustomToken pour connecter l'utilisateur

firebase.auth().signInWithCustomToken(token).catch(function(error) {
  // Gérer les erreurs ici.
  var errorCode = error.code;
  var errorMessage = error.message;
  // ...
});

2voto

Sushil Kumar Points 4456

Si vous essayez à travers REST API que vous devez effectuer toutes les opérations dans votre application.

Il vous suffit de récupérer les données json et de vérifier si vous êtes authentifié ou non.

utilisez la méthode retrofit Get et récupérez simplement toutes les données de votre application Firebase.

Ce post est le mien Rerofit + Firebase que j'ai posté pour les débutants pour comprendre la connexion entre firebase et Retrofit.

OU

Veuillez consulter ces liens, ils vont vous aider .....................

Authentification REST

Authentification utilisateur

Exemple

profitez de coder.......

0 votes

Je cherche à accéder à la base de données Firebase depuis mon application web via une requête https, mais je reçois une erreur 403 d'accès refusé. Pouvez-vous jeter un œil à ma question car aucune des réponses ci-dessus ne fonctionne pour moi. J'utilise le framework swift + vapor.

1voto

Vous avez besoin du retour d'un Token une fois que vous vous authentifiez avec votre adresse e-mail & mot de passe, selon la documentation vous pouvez retourner le token d'un utilisateur avec getToken(opt_forceRefresh), disponible à l'URL suivant.

https://firebase.google.com/docs/reference/js/firebase.User#getToken

0voto

Mina Samy Points 3207

Je crois que vous pouvez faire l'une des actions suivantes:

  • Connectez votre application web à Firebase, votre API REST gérera l'authentification en recevant les informations d'identification de l'utilisateur, puis en s'authentifiant avec Firebase à travers les APIs de connexion par mot de passe

  • Utilisez le SDK serveur Firebase pour générer des jetons d'authentification personnalisés, le jeton sera un JSON Web Token (JWT).

Il existe également des projets sur GitHub pour générer des jetons Firebase:

0 votes

Oui, j'essaie des deux façons et aucune ne fonctionne en python. Connaissez-vous des exemples de python utilisant l'une ou l'autre méthode? Le lien que vous avez posté est le générateur de jeton lui-même, mais je voudrais voir un exemple de comment il est utilisé en python. Merci

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X