web-dev-qa-db-de.com

Verwendung von Mail und Passwort zur Authentifizierung über die REST API [Firebase]

Ich habe mich gefragt, ob es möglich ist , sich tatsächlich bei der Firebase zu authentifizieren REST-API ohne Verwendung der benutzerdefinierten Authentifizierung ?

Ich arbeite jetzt seit einiger Zeit mit Firebase und denke derzeit darüber nach, ein Backend von mir nach Firebase zu migrieren. Die App, die das Backend verwendet, verwendet derzeit eine REST API und benötigt überhaupt keine Echtzeitdaten. Daher möchte ich nur die REST API und nicht das vollständige Android Framework auf den Clients.

Ist es möglich, ein Authentifizierungs-Token mit der Mail- und Passwort-Authentifizierung von Firebase über HTTP-Anfragen zu erhalten?

In den alten Dokumenten habe ich nur eine Lösung mit benutzerdefiniertem Login gefunden und in den neuen Dokumenten scheinen Sie ein Google-Service-Konto zu benötigen.

Jede Hilfe oder Beratung geschätzt.

49
Endzeit

Update: Firebase REST Authentifizierung ist jetzt dokumentiert!

Dokumentation anzeigen


Firebase REST Authentifizierung

Ich fand heraus, wie die E-Mail- und Kennwortauthentifizierung für Firebase durchgeführt wird, indem ich die von der Javascript-API gesendeten Anforderungen untersuchte.

Diese APIs sind undokumentiert und werden nicht unterstützt


Feuerbasis 3

Die Firebase 3-Authentifizierung ist eine aktualisierte und umbenannte Version des Google Identity Toolkit. Die alte Dokumentation ist nicht vollständig korrekt, kann aber nützlich sein und ist hier zu finden: https://developers.google.com/identity/toolkit/web/reference/

Firebase 3 erfordert, dass alle Anforderungen Content-Type: application/json Im Header enthalten

API-Schlüssel

Für Firebase 3 muss allen Authentifizierungsanforderungen ein API-Schlüssel angehängt werden. Sie finden den API-Schlüssel für Ihre Datenbank, indem Sie die Firebase-Projektübersicht aufrufen und auf "Firebase zu Ihrer Web-App hinzufügen" klicken. Sie sollten ein Fenster mit folgendem Code sehen:

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

Kopieren Sie den apiKey-Wert und speichern Sie ihn für später.

Anmeldung

Methode: POST

URL: https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=<my-firebase-api-key>

Nutzlast:

{
    email: "<email>",
    password: "<password>",
    returnSecureToken: true
}

Antwort:

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

Einloggen

Methode: POST

URL: https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=<my-firebase-api-key>

Nutzlast:

{
    email: "<email>",
    password: "<password>",
    returnSecureToken: true
}

Antwort:

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

Kontoinformationen abrufen

Methode: POST

URL: https://www.googleapis.com/identitytoolkit/v3/relyingparty/getAccountInfo?key=<my-firebase-api-key>

Nutzlast:

{
    idToken: "<provider-id-token>"
}

Antwort:

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

Diese Anforderungen geben die in den Firebase-Dokumenten beschriebenen JSON-Daten zurück. https://www.firebase.com/docs/web/guide/login/password.html#section-logging-in

Einloggen

Sie können sich authentifizieren, indem Sie eine GET-Anforderung mit dem folgenden Format senden:

https://auth.firebase.com/v2/<db_name>/auth/password?&email=<email>&password=<password>

Anmeldung

Die Benutzererstellung kann auch durchgeführt werden, indem dieselbe GET-Anforderung mit _method=POST Als Teil der Abfragezeichenfolge gesendet wird

https://auth.firebase.com/v2/<db_name>/users?&email=<email>&password=<password>&_method=POST
61
nloewen

Aus dem Firebase-Handbuch Mit Firebase auf Websites mithilfe eines benutzerdefinierten Authentifizierungssystems authentifizieren (siehe https://firebase.google.com/docs/auth/web/custom-auth )

Sie können die Firebase-Authentifizierung in ein benutzerdefiniertes Authentifizierungssystem integrieren, indem Sie Ihren Authentifizierungsserver so ändern, dass benutzerdefinierte signierte Token erstellt werden, wenn sich ein Benutzer erfolgreich anmeldet. Ihre App empfängt dieses Token und verwendet es zur Authentifizierung bei Firebase.

Hier ist die Schlüsselidee:

1) Fügen Sie Ihrem Webprojekt Firebase hinzu und verwenden Sie Firebase REST JavaScript SDK zur Authentifizierung und greifen Sie mit Firebase auf die Speicher-/Echtzeitdatenbank zu.

  // 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) Ihre App-Benutzer melden sich mit ihrem Benutzernamen und Passwort bei Ihrem Authentifizierungsserver an. Ihr Server überprüft die Anmeldeinformationen und gibt ein benutzerdefiniertes Token zurück, wenn diese gültig sind.

3) Nachdem Sie das benutzerdefinierte Token von Ihrem Authentifizierungsserver erhalten haben, übergeben Sie es an signInWithCustomToken, um den Benutzer anzumelden

firebase.auth().signInWithCustomToken(token).catch(function(error) {
  // Handle Errors here.
  var errorCode = error.code;
  var errorMessage = error.message;
  // ...
});
4
Chebyr

Wenn Sie REST API durchprobieren, müssen Sie alle Operationen in Ihrer Anwendung ausführen.

Nehmen Sie einfach die json-Daten und überprüfen Sie Ihre Authentifizierung oder nicht.

verwenden Sie Retrofit Get-Methode und greifen Sie einfach auf alle Daten Ihrer Firebase-App zu.

dies ist mein Beitrag Rerofit + Firebase der für Anfänger geschrieben wurde, um die Verbindung von Firebase und Retrofit zu verstehen.

[~ # ~] oder [~ # ~]

Bitte gehen Sie diese Links durch, es wird Ihnen helfen .....................

REST auth

Benutzerauthentifizierung

Beispiel

viel spass beim codieren .......

2
sushildlh

Sie benötigen die Rücksendung eines Tokens, sobald Sie sich mit Ihrer E-Mail-Adresse und Ihrem Passwort authentifiziert haben. Gemäß der Dokumentation können Sie das Token eines Benutzers mit getToken(opt_forceRefresh) unter der folgenden URL zurücksenden.

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

1

Ich glaube, Sie können eine der folgenden Aktionen ausführen:

Es gibt auch Projekte auf GitHub zum Generieren von Firebase-Token:

0
Mina Samy