I'm using firebase admin becasue I want to validate my users in a different server. I have the following code but I'm getting the error
{ code: 'auth/user-not-found',
message: 'There is no user record corresponding to the provided identifier.' } }
Docs https://firebase.google.com/docs/auth/admin/create-custom-tokens
var uid = user_dict['uid'];
admin.auth().createCustomToken(uid)
.then(function (customToken) {
admin.auth().updateUser(uid, {
//email: user_dict['email'],
emailVerified: true,
displayName: user_dict['displayName'],
photoURL: user_dict['photoURL']
})
.then(function(userRecord) {
response = {
token:customToken
};
res.send(response);
})
.catch(function(error) {
console.log("Error updating user:", error);
res.statusCode = 401;
res.send("Error al actualizar usuario")
});
})
.catch(function (error) {
console.log("Error creating custom token:", error);
res.statusCode = 401;
res.send("El usuario no existe")
});
The wierd part this code is working for 1 user, but not for the rest. Why?
I change my code to this:
var uid = user_dict['uid'];
admin.auth().createCustomToken(uid) .then(function (customToken) {
admin.auth().getUser(uid)
.then(function(userRecord) {
// See the UserRecord reference doc for the contents of userRecord.
console.log("Successfully fetched user data:", userRecord.toJSON());
admin.auth().updateUser(uid, {
email: user_dict['email'],
emailVerified: true,
displayName: user_dict['displayName'],
photoURL: user_dict['photoURL']
})
.then(function(userRecord) {
response = {
token:customToken
};
res.send(response);
})
.catch(function(error) {
console.log("Error updating user:", error);
res.statusCode = 401;
res.send("Error al actualizar usuario")
});
})
.catch(function(error) {
console.log("Error fetching user data:", error);
admin.auth().createUser({
uid:uid,
email: user_dict['email'],
emailVerified: true,
displayName: user_dict['displayName'],
photoURL: user_dict['photoURL'],
password:req.body['password']
})
.then(function(userRecord) {
// See the UserRecord reference doc for the contents of userRecord.
console.log("Successfully created new user:", userRecord.uid);
response = {
token:customToken
};
res.send(response);
})
.catch(function(error) {
console.log("Error creating new user:", error);
res.statusCode = 401;
res.send("Error al crear el usuario")
});
});
})
.catch(function (error) {
console.log("Error creating custom token:", error);
res.statusCode = 401;
res.send("El usuario no existe")
});
You can see in the following screenshot carlos@mail is created using the function createUser() and the other email ricardo@mail is not. They don't have the same provider why such a difference?
createCustomToken()
accepts arbitrary user ID strings. But updateUser()
does not. The UID passed to updateUser()
must already exist in the Firebase project. You need to call createUser()
to first create those user accounts in Firebase.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With