1

Vous ne savez pas si c'est le bon endroit pour cette question? Ce n'est pas un problème de codage 100% nécessaire mais ce n'est pas non plus un problème de codage. Quoi qu'il en soit, voiciComment lier un compte utilisateur à des actions Google, à une application mobile, à un serveur dorsal et à une autorisation Firebase?

L'histoire: Je veux créer un système de magasinage. L'utilisateur peut utiliser le site Web, l'application mobile ou l'assistant google pour obtenir des informations sur le produit et effectuer des achats à partir de ce système d'achat. Le problème auquel je suis confronté est comment puis-je associer l'utilisateur parmi ces 3 clients. Plus spécifiquement pour les assistants/actions google.

choses que j'ai fait: En utilisant firebase auth pour les utilisateurs de l'authentification et ouverture de session sur le site ou les applications mobiles. Une fois l'utilisateur authentifié, un jeton d'accès Firebase est disponible pour le site Web ou l'application mobile à utiliser. Le site Web ou l'application mobile peut envoyer le jeton d'accès Firebase au serveur principal, et le serveur principal peut vérifier cet accès via le firebase admin sdk. Tout fonctionne comme prévu jusqu'à ce que je veux introduire le google actions/assistant en jeu.

Pour assistant google/actions: J'ai suivi this et this pour se connecter à l'utilisateur dans l'application des actions Google. À ce stade, je suis en mesure d'obtenir des informations de profil de base de l'utilisateur si l'utilisateur s'est connecté à l'application google actions en utilisant son compte google.

Les problèmes:

  1. Après je reçois le profil de l'utilisateur comme ID utilisateur, email, etc, de la connexion de l'action Google, alors j'interroger la base de données sur le serveur principal et si je trouve un utilisateur avec cet identifiant ou email, alors ceci est un utilisateur valide et authentifié, et je vais permettre à l'utilisateur de faire des achats via google assistant. Cette approche est-elle saine et sûre pour identifier l'utilisateur sur google actions/assistant?
  2. Supposons que l'approche ci-dessus est saine et sauve, que puis-je faire si le compte d'utilisateur a été créé en utilisant un autre compte de messagerie au lieu d'un compte google? c'est-à-dire l'utilisateur initialement enregistré sur le site Web ou l'application mobile en utilisant un e-mail non-google ou un autre Oauth2 (fb, twitter, etc.) via l'authentification firebase. Dans ce cas, ma base de données principale ne contiendra pas d'informations de compte google pour l'utilisateur et si l'utilisateur se connecte à mon application google actions avec un compte google, je n'aurai aucun moyen d'identifier cet utilisateur dans la base de données utilisateur existante.
  3. Existe-t-il un moyen d'authentifier/connecter l'utilisateur à l'application google action via l'authentification firebase et d'obtenir un jeton d'accès firebase sur le serveur backend fulfillment de google actions? S'il y a un moyen de faire cela, je suppose que le problème précédent n'existera pas car je serai capable d'utiliser ce jeton Firbase pour vérifier l'utilisateur, peu importe si le compte utilisateur a été créé avec google account ou autres comptes email ou autre Oauth2 fournisseurs.
  4. Si tout ce qui précède a échoué, est-ce que dumping firebase auth et créer mon service Oauth 2 est une option et est-ce que ce sera le seul plan de sauvegarde disponible pour moi?

Répondre

2

Quelques réponses à vos questions:

  1. Si ID ou matchs Email - cet d'identifier l'utilisateur?

    Eh bien, oui et non.

    Si les ID correspondent, vous avez vérifié que l'identifiant Google du compte connecté correspond au compte Google enregistré. Génial! C'est sécurisé et vous pouvez lui faire confiance.

    Si le email correspond ... bien ... à un degré de confiance beaucoup plus faible. Bien que Google effectue une vérification par opt-in, cela semble toujours prendre un risque. Adresses e-mail do change avec le temps.

  2. Et s'ils s'authentifiaient via d'autres moyens?

    Ai-je résumé cette question correctement?

    Je suppose que je ne suis pas sûr de la façon dont vous traiteriez ceci dans n'importe quel autre cas. S'ils se connectent à votre application Assistant en utilisant un autre compte (pas par courriel, compte) qu'ils ne l'ont fait pour le web ... ils veulent que les deux soient différents?

    Et ils peuvent se connecter à votre action en utilisant un compte Google différent de celui qu'ils ont utilisé pour configurer leur appareil. Il y a des flux qui les encouragent à utiliser le même, mais ils n'ont pas à le faire, et vous pouvez revenir à ces autres flux si vous n'avez pas de compte dans le dossier pour celui qu'ils utilisent par défaut. Je ne peux pas simplement utiliser Firebase Auth?

  3. Eh bien ... non et oui. Non, il n'y a aucun moyen de dire à l'Assistant de vous remettre un jeton d'authentification Firebase au lieu du jeton qu'il veut vous donner.

    Cependant, vous pouvez utiliser Firebase Auth si vous êtes prêt à configurer votre propre serveur OAuth2. Le lien vers la question StackOverflow ci-dessus essayait juste de contourner le fait d'avoir à installer un serveur OAuth2 vous-même. Si vous en définissez une, vous pouvez leur demander de se connecter à l'aide de Firebase Sign-In, générer le jeton et le stocker par rapport à leur ID Firebase, puis émettre ce jeton sur le client Assistant. Lorsque vous récupérez ce jeton, vous pouvez facilement l'associer à l'ID Firebase.

    BUT Vous devez faire ce travail. Ni Firebase ni l'assistant ne le feront pour vous.

    (Une occasion manquée pour Firebase et Google Cloud, IMHO. Mais ...)

    Vous avez déjà vu la page pour savoir comment construire un serveur OAuth2 minimal.

  4. Dois-je juste vider Firebase Auth?

    Il n'y a pas besoin de. Vous pouvez utiliser Firebase Auth conjointement avec la configuration de votre propre serveur OAuth2. C'est une base idéale pour cela! Personnellement, j'utilise Firebase Auth et Firebase Sign-In (et les fonctions Firebase Hosting et Firebase) comme base de mon implémentation OAuth2.

+1

Merci beaucoup! Je me demandais juste ce serait bien si ce gars @Prisoner de ce poste StackOverflow peut donner quelques entrées ici. Accepter que ce serait bien si je peux utiliser auth firebase sur google actions sans configurer un serveur OAuth2 moi-même. –