web-dev-qa-db-fra.com

Utilisation de la messagerie et du mot de passe pour s'authentifier via l'API REST [Firebase]

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.

49
Endzeit

Mise à jour: Firebase REST est maintenant documentée!

Voir la documentation


Firebase REST authentification

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


Firebase 3

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

Clé API

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.

Enregistrement

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"
}

S'identifier

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"
}

Obtenir des informations sur le compte

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"
    }]
}

Firebase 2

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

S'identifier

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>

Enregistrement

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
61
nloewen

À 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;
  // ...
});
4
Chebyr

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 .....................

Autorisation REST

Authnitication utilisateur

Exemple

profitez du codage .......

2
sushildlh

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

1

Je pense que vous pouvez effectuer l'une des actions suivantes:

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

0
Mina Samy