2017-10-26 5 views
1

Ich bin neu in der Verwendung von Firebase (ich verwende react-redux-firebase, bin mir aber nicht sicher, ob das für diese Frage relevant ist). Ich habe ein Problem, diese Standard-Auth Regeln:Firebase Benutzer-UID stimmt nicht mit Authentifizierungs-UID überein

{ 
    "rules": { 
     "users": { 
     "$uid": { 
      ".read": "$uid === auth.uid", 
      ".write": "$uid === auth.uid" 
     } 
     } 
    } 
} 

Dies ist als Benutzer UID in der Firebase Authentication Armaturenbrett angezeigt:

enter image description here

Aber wenn ich die Daten auszudrucken mit dem zugehörigen profile/Konto, erhalte ich diese UID:

enter image description here

Aufgrund dieser Diskrepanz, die Loggien d in user kann die Firebase-Instanz nicht lesen oder schreiben.

enter image description here

Warum gibt es eine Diskrepanz in UIDs? Wie kann ich dieses Problem lösen?

UPDATE:

Es sieht aus wie die 1091103… UID-Provider-spezifisch ist und in diesem Fall nicht relevant? Kann das nicht sicher bestätigen.

Dies kann die tatsächliche Auth UID (ich bin neu dazu, so noch zu versuchen, herauszufinden, was was ist):

enter image description here

In diesem Fall wird diese UID übereinstimmt, was in der zu sehen ist Firebase-Konsole Wenn sie übereinstimmen, was wäre dann der Grund für die Berechtigung verweigert Fehler?

ANOTHER UPDATE:

Hier ist der Benutzerknoten. Sie können die UID als Schlüssel sehen:

enter image description here

+0

Ich denke, dass ist "Provider-spezifische UID" Form Google anmelden. Nicht auth UID – Hareesh

+0

überprüfen Sie unter 'Benutzer' Sie haben die richtige 'Auth UID' aufgelistet, sonst speichern Sie falsche UID zu' Benutzer' Datenbank – Hareesh

+0

Es scheint, dass sie übereinstimmen. Wenn Sie die Firebase-Datenbank durchsuchen, gibt es keine Unterschiede zwischen den UIDs. In diesem Fall bin ich mir nicht sicher, warum ich Fehler mit Berechtigung verweigert bekomme. Meine Frage wurde aktualisiert, um dies zu berücksichtigen. – timothym

Antwort

0

Dies ist die Regel, die Sie richtig machen jetzt

{ 
    "rules": { 
    ".read": "auth != null", 
    ".write": "auth != null" 
    } 
} 

wenn Sie wie überprüfen möchten unter

{ 
    "rules": { 
     "users": { 
     "$uid": { 
      ".read": "$uid === auth.uid", 
      ".write": "$uid === auth.uid" 
     } 
     } 
    } 
} 

Sie brauchen um die Benutzer während der Registrierung in der Echtzeitdatenbank zu speichern. mit ihrem auth.uid als Schlüssel.

+0

Ich verwende einen externen Autorisierungsanbieter (google, wie in einem der Screenshots zu sehen). Laut den Dokumenten, die ich gelesen habe - "Firebase erstellt den Benutzer automatisch". Wenn die Benutzererstellung/-registrierung automatisch erfolgt, wie soll ich die Benutzer in der Echtzeitdatenbank speichern? Der Anbieter hat in der Benutzerzeile in der Echtzeitdatenbank keine UID festgelegt. – timothym

+0

Ich habe meiner Frage ein weiteres Update hinzugefügt, das einen Screenshot des Benutzerknotens enthält. – timothym

Verwandte Themen