RÉPONSE MIS À JOUR (v1.0.0+):
Comme indiqué dans la réponse de @Bery ci-dessus, la version 1.0.0
du SDK Firebase Functions a introduit un nouvel objet context.auth
qui contient l'état d'authentification tel que uid
. Voir "Nouvelles propriétés pour les informations d'authentification utilisateur" pour plus de détails.
RÉPONSE ORIGINALE (avant v1.0.0):
Oui, c'est techniquement possible, bien que cela ne soit pas actuellement documenté. Le uid
est stocké avec l'objet event.auth
. Lorsqu'une Fonction Cloud de Base de Données est déclenchée depuis une situation d'administration (par exemple, depuis l'inspecteur de données de la Console Firebase ou depuis un SDK d'administration), la valeur de event.auth
est :
{
"admin": true
}
Lorsqu'une Fonction Cloud de Base de Données est déclenchée depuis une référence non authentifiée, la valeur de event.data
est :
{
"admin": false
}
Enfin, lorsqu'une Fonction Cloud de Base de Données est déclenchée depuis une référence authentifiée, mais non administrative, le format de event.auth
est :
{
"admin": false,
"variable": {
"provider": "",
"provider_id": "",
"user_id": "",
"token": {
// Revendications du jeton d'authentification décodé telles que sub, aud, iat, exp, etc.
},
"uid": ""
}
}
Étant donné les informations ci-dessus, votre meilleur choix pour obtenir le uid
de l'utilisateur ayant déclenché l'événement est le suivant :
exports.someFunction = functions.database.ref('/some/path')
.onWrite(event => {
var isAdmin = event.auth.admin;
var uid = event.auth.variable ? event.auth.variable.uid : null;
// ...
});
Notez simplement que dans le code ci-dessus, uid
serait null
même si isAdmin
est true
. Votre code exact dépend de votre cas d'utilisation.
AVERTISSEMENT : Ce comportement est actuellement non documenté, donc je donne ma mise en garde habituelle : "les fonctionnalités non documentées peuvent être modifiées à tout moment à l'avenir sans préavis et même dans des versions non majeures".