2

Je suis actuellement en train d'écrire une application Android. Dans mon application, les utilisateurs peuvent évaluer certains objets. Les données (les objets ainsi que les notes) doivent être stockées dans Google Firebase, en particulier Firestore. J'ai déjà lié mon application à Firebase et implémenté le com.google.android.gms.auth.api.signin pour obtenir le GoogleSignInAccount de l'utilisateur actuel.Firebase enregistrer des données utilisateur


Je veux enregistrer les données dans la base de données comme:

SomeObject: | objectId | name | 

ObjectRating: | ratingId | objectId | userId | rating | 

Ce que je ne suis pas sûr est, ce qu'il faut économiser userId. La documentation de GoogleSignInAccount.getId() dit:

Important: Ne pas utiliser ce retour Google ID pour communiquer actuellement connecté à l'utilisateur de votre serveur principal. Au lieu de cela, envoyez un jeton d'identification (requestIdToken (String)), qui peut être validé de manière sécurisée sur le serveur; ou envoyez un code d'authentification de serveur (requestServerAuthCode (String)) qui peut être à son tour échangé contre un jeton d'identification.

Je ne devrais probablement pas l'utiliser. Mais le IdToken recommandé est signé, donc je pense que ce sera différent à chaque fois que la méthode est appelée.

La plupart des utilisateurs créent un répertoire d'utilisateurs dans la base de données. Mais à partir de l'application, je veux obtenir la note des utilisateurs ainsi que la note moyenne globale de tous les utilisateurs pour l'objet donné. Je pense donc que la division des notes dans plusieurs tableaux d'utilisateurs complique le calcul de la note moyenne globale.

Ma question est: Comment puis-je lier l'ObjectRating à l'utilisateur, sans utiliser le getId() dangereux tout en étant toujours en mesure de sélectionner tous les ObjectRatings par objectId pour calculer la note moyenne?

+0

Pourquoi si compliqué? Pourquoi ne pas utiliser Firebase Auth plutôt que Google? C'est encore plus facile si vous utilisez Firebase-UI – faruk

+0

essayer d'obtenir userId De Firebase Auth. –

Répondre

2

Pour obtenir l'identifiant unique de l'utilisateur, vous pouvez utiliser FirebaseAuth pour obtenir l'objet FirebaseUser:

FirebaseAuth.getInstance().getCurrentUser().getUid(); 

La méthode getUid():

Renvoie une chaîne utilisée pour identifier votre utilisateur dans votre Firebase base de données utilisateur du projet. Utilisez-le lors du stockage des informations dans Firebase Base de données ou de stockage, ou même dans votre propre backend.

Vous devez vous assurer que vous avez used the GoogleSignInAccount to authenticate with Firebase avant d'appeler getCurrentUser(), sinon elle retournera null.