Es gibt einen Firebase-Server-Side-Code (Firebase-Funktionen), der einen Benutzer erstellt, wenn die angegebene userId nicht vorhanden ist.uid-already-exist-Fehler beim Erstellen eines nicht vorhandenen Benutzers
Es funktioniert normalerweise gut, aber selten schlägt fehl.
function createUserIfNotExist(userId, userName) {
admin.auth().getUser(userId).then(function (userRecord) {
return userRecord;
}).catch(function (error) {
return admin.auth().createUser({
uid: userId,
displayName: userName,
})
})
}
Wenn gegeben userId nicht existiert, admin.auth(). GetUser() throws
{ code: 'auth/user-not-found', message: 'There is no user record corresponding to the provided identifier.' }
So admin.auth(). Create() in catch-Klausel genannt. Aber es schlägt manchmal mit folgendem Fehler fehl
{ Error: The user with the provided uid already exists.
at FirebaseAuthError.Error (native)
at FirebaseAuthError.FirebaseError [as constructor] (/user_code/node_modules/firebase-admin/lib/utils/error.js:39:28)
at new FirebaseAuthError (/user_code/node_modules/firebase-admin/lib/utils/error.js:104:23)
at Function.FirebaseAuthError.fromServerError (/user_code/node_modules/firebase-admin/lib/utils/error.js:128:16)
at /user_code/node_modules/firebase-admin/lib/auth/auth-api-request.js:399:45
at process._tickDomainCallback (internal/process/next_tick.js:135:7)
errorInfo:
{ code: 'auth/uid-already-exists',
message: 'The user with the provided uid already exists.' } }
Ist es Firebase-Fehler oder etwas ist falsch in meinem Code?
Da UIDs ziemlich zufällig sind, wie erhalten Sie eine UID für einen Benutzer, der noch nicht existiert? I.e. Woher kommen diese Werte, wenn Sie 'createUserIfNotExist' aufrufen? –
@FrankvanPuffelen die UIDs werden von 3rd Party Auth (Facebook Messenger-Plattform) generiert. Wir verwenden benutzerdefinierte Authentifizierung. – grayger