Ich habe die Firebase-Datenbank auf Version 9.2.0 aktualisiert. Die Firebase-UID war früher google: (google signin id), aber es passt jetzt nicht.google signin uid & firebase uid stimmen nicht überein, nachdem Firebase auf 9.2.0 aktualisiert wurde
Vor Upgrade -
Google Signin uid = 101672719428298324455
Firebase uid = google: 101672719428298324455
Nach dem Upgrade -
Google Signin uid = 101672719428298324455
Firebase uid = fcojpImyQWTHp02YzWYsRezShKP2
Die Google-UID wird von anderen Diensten wie Klassenraum zurückgegeben, also müssen wir diese als UID verwenden, um zu sagen, um welchen Benutzer es sich handelt. Wir werden das Benutzerfeld aktualisieren, um die Google-Anmelde-UID anstelle des Firebase-Servers zu verwenden.
Aber wie schreiben wir dann Sicherheitsregeln für die Authentifizierung mit der Google Sign-in-UID mit der aktualisierten Firebase? Spezifischer Anwendungsfall für die Regeln ist, dass ein Lehrer die Zeugniskarte eines Schülers lesen kann. Lehrer- und Schüler-UIDs, die von Google Classroom für die Klassenzugehörigkeit bereitgestellt werden, entsprechen den Google-Anmelde-UIDs, nicht der Firebase-UID.
Unterhalb der Code verwendet wird, nach dem Upgrade anmelden -
FirebaseAuth auth = FirebaseAuth.getInstance();
AuthCredential credential = GoogleAuthProvider.getCredential(token, secret);
auth.signInWithCredential(credential).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
// Authenticated successfully with payload authData
AuthResult result = task.getResult();
FirebaseUser user = result.getUser();
Die Schüler für die Klasse geladen werden, mit Google-Klassenzimmer
"google:101379167706178411999": {
"profile" : {
"course" : {
"students" : {
"google:102942138935686001927" : {
"profile" : {
"name" : "student1 U."
}
},
"google:111992383609839990527" : {
"profile" : {
"name" : "student2 U."
}
}
}
},
"email" : "...",
"name" : "teacher User",
}
}
Dann Lehrer verwendet die Google-signin ids Fragen Sie den Schüler -
Sind diese Benutzer vor dem Upgrade vorhanden? In diesem Fall sollte der Benutzer die gleiche UID erhalten haben, als er sich im aktualisierten Backend angemeldet hat. –
Nein. Wir haben vor der Produktion ein Upgrade durchgeführt. Wir machen uns bereit für die Produktion. Neue Datenbank mit neuer Firebase-Konsole erstelltEs ist auch ein Problem für neue Benutzer, da die IDs, die google-classroom für sie hält (google sign-in id), nicht die eine ist, die firebase als auth.guid hat – anar