如何在Google操作,移动应用,后端服务器和firebase auth之间关联用户帐户?

时间:2017-10-17 05:04:38

标签: android authentication firebase-authentication actions-on-google

不确定这是否适合此问题。这不是100%编码问题,但也不是编码问题。无论如何,这是

故事:我想创建一个购物系统。用户可以使用网站或移动应用程序或谷歌助手获取产品信息并从该购物系统购物。我面临的问题是如何将这三个客户端中的用户关联起来。更具体地说是谷歌助手/行动。

我做过的事情: 使用firebase auth进行身份验证并将用户登录到网站或移动应用程序。用户通过身份验证后,可以使用firebase访问令牌供网站或移动应用使用。网站或移动应用程序可以将firebase访问令牌发送到后端服务器,后端服务器可以通过firebase admin sdk验证此accessToken。一切都按预期工作,直到我想介绍google actions/assistant为止。

对于Google助理/操作:我按了thisthis将用户登录到Google操作应用。此时,如果用户使用他们的Google帐户登录Google操作应用,我可以获取用户基本个人资料信息。

问题:

  1. 从google操作登录中获取用户ID,电子邮件等用户配置文件后,我在后端服务器上查询数据库,如果我找到具有此ID或电子邮件的用户,则此操作有效和经过身份验证的用户,我将允许用户通过谷歌助手购买。 这种方法在Google操作/助手上识别用户是否安全可靠?
  2. 假设上述方法安全无恙,如果用户帐户是使用其他电子邮件帐户而非Google帐户创建的,我该怎么办?即用户最初在网站或移动应用程序上注册通过firebase auth使用非谷歌电子邮件或其他Oauth2(fb,twitter等)。在这种情况下,我的后端数据库不会为用户提供Google帐户信息,如果用户使用Google帐户登录我的Google操作应用,我将无法在现有用户数据库中识别此用户。
  3. 有没有办法通过firebase身份验证对google操作应用进行身份验证/登录,并在google操作上获取firebase访问令牌' fulfillment后端服务器?如果有办法执行此操作,我认为之前的问题将不存在,因为无论用户帐户是谁,我都可以使用此firbase令牌来验证用户使用Google帐户或其他电子邮件帐户或其他Oauth2提供商创建。
  4. 如果上述所有方法都失败了,是在转储firebase auth并创建我的Oauth 2服务选项,它是否是唯一可用的备份计划?

1 个答案:

答案 0 :(得分:2)

您的问题的一些答案:

  1. 如果ID或电子邮件匹配 - 这是否会识别用户?

    嗯,是的,没有。

    如果ID与之匹配,则表示您已确认所登录帐户的Google ID与您记录的Google帐户相匹配。大!这是安全的,你可以相信它。

    如果电子邮件匹配......那么......信心度要低得多。虽然Google确实会选择加入,但这似乎仍然存在风险。电子邮件地址执行随时间而变化。

  2. 如果通过其他方式进行身份验证会怎样?

    我是否正确地总结了这个问题?

    我想我不确定在任何其他情况下你会如何处理这个问题。如果他们使用不同的帐户(不是电子邮件,帐户)登录您的智能助理应用程序,而不是用于网络...他们希望两者不同?

    他们可以使用与他们用于设置设备的帐户不同的Google帐户登录您的操作。有些流程鼓励他们使用相同的流程,但他们不必这样做,如果您没有默认使用的帐户,则可以回退到其他流程。

  3. 我不能只使用Firebase Auth吗?

    嗯......不,是的。

    不,无法告诉智能助理为您提供Firebase身份验证令牌,而不是您想要提供的令牌。

    但是,如果您愿意设置自己的OAuth2服务器, 可以使用Firebase Auth。上面的StackOverflow问题的链接只是试图自己设置OAuth2服务器。如果您设置了一个,则可以使用Firebase登录进行登录,生成令牌并将其存储在Firebase ID中,然后将该令牌发送给Assistant客户端。当您获得该令牌后,您可以轻松地将其与Firebase ID相关联。

    但是你需要做那项工作。 Firebase和智能助理都不会为你做这件事。

    (错过了Firebase和Google Cloud的机会,imho。但是......)

    您已经看过如何构建最小OAuth2服务器的页面。

  4. 我应该只是转储Firebase Auth吗?

    没有必要。您可以将Firebase Auth与设置自己的OAuth2服务器结合使用。它是一个很好的基地!我个人使用Firebase Auth和Firebase登录(以及Firebase托管和Firebase功能)作为我的OAuth2实施的基础。