如何在 google 操作、移动应用程序、后端服务器和 firebase 身份验证中使用 link 用户帐户?
How to link user account among google actions, mobile app, backend server and firebase auth?
不确定这里是否适合回答这个问题。这不是必要的 100% 编码问题,但也不是编码问题。不管怎样,这里是
故事:我想创建一个购物系统。用户可以使用网站或手机应用程序或google助手获取商品信息并通过该购物系统进行购买。我面临的问题是 我如何关联这 3 个客户端中的用户。更具体地说是 google assistant/actions.
我做过的事情:
使用 firebase auth for authenticate and login users onto the website or the mobile applications. After the user is authenticated and a firebase access token is available for the website or mobile app to use. The website or the mobile app can send the firebase access token to the backend server, and the backend server can verify this accessToken through firebase admin sdk. Everything is working as expected until I want to introduce the google actions/assistant 发挥作用。
对于 google assistant/actions: 我按照 this and 将用户登录到 google 操作应用程序。此时,如果用户使用他们的 google 帐户登录到 google 操作应用程序,我就可以获取用户的基本个人资料信息。
问题:
- 在我从 google 操作登录中获取用户 ID、电子邮件等用户配置文件后,我查询后端服务器上的数据库,如果我找到具有此 ID 或电子邮件的用户,那么这是一个有效且经过身份验证的用户,我将允许该用户通过 google 助手进行购买。 这种方法在 google actions/assistant 上识别用户安全可靠吗?
- 假设上述方法是安全可靠的,如果用户帐户是使用其他电子邮件帐户而不是 google 帐户创建的,我该怎么办? 即用户最初通过 firebase 身份验证使用非 google 电子邮件或其他 Oauth2(fb、twitter 等)在网站或移动应用程序上注册。在这种情况下,我的后端数据库将没有用户的 google 帐户信息,如果用户使用 google 帐户登录我的 google 操作应用程序,我将无能为力在现有用户数据库中识别此用户。
- 有没有办法 authenticate/login 用户通过 firebase 身份验证进入 google 动作应用,并在 google 动作上获得 firebase 访问令牌' fulfillment backend server? 如果有办法做到这一点,我想之前的问题就不会存在了,因为无论用户帐户是否存在,我都可以使用这个firbase token来验证用户使用 google 帐户或其他电子邮件帐户或其他 Oauth2 提供商创建。
- 如果上述所有方法都失败了,是否可以放弃 firebase 身份验证并创建我的 Oauth 2 服务?这将是我唯一可用的备份计划吗?
您的问题的一些答案:
如果 ID 或电子邮件匹配 - 这是否可以识别用户?
好吧,是也不是。
如果 ID 匹配,则您已验证登录帐户的 Google ID 与您记录的 Google 帐户匹配。伟大的!这是安全的,您可以信任它。
如果 email 匹配...嗯...可信度低得多。虽然 Google 确实会进行选择加入检查,但这看起来仍然像是在冒险。电子邮件地址 do 随时间变化。
如果他们通过其他方式进行身份验证怎么办?
我对这个问题的总结是否正确?
我想我不确定在任何其他情况下你会如何处理这个问题。如果他们使用与用于网络时不同的帐户(不是电子邮件、帐户)登录您的智能助理应用...他们希望两者不同?
并且他们可以使用不同于他们用于设置设备的Google 帐户登录您的 操作。有些流程鼓励他们使用相同的流程,但他们不必这样做,如果您没有记录他们默认使用的帐户,您可以回退到其他流程。
我不能只使用 Firebase Auth 吗?
嗯...不,是的。
不,没有办法只告诉智能助理给你一个 Firebase 授权令牌而不是它想要给你的令牌。
但是,如果您愿意设置自己的 OAuth2 服务器,则可以使用 Firebase Auth。上面 Whosebug 问题的 link 只是试图解决必须自己设置 OAuth2 服务器的问题。如果您设置了一个,您可以让他们使用 Firebase 登录登录,生成令牌并将其存储在他们的 Firebase ID 中,然后将该令牌颁发给 Assistant 客户端。取回该令牌后,您可以轻松地将其关联回 Firebase ID。
但是 您需要完成这项工作。 Firebase 和 Google 助理都不会为您做这件事。
(Firebase 和 Google Cloud 错失良机,恕我直言。但是...)
您已经看过有关如何构建最小 OAuth2 服务器的页面。
我应该放弃 Firebase Auth 吗?
没有必要。您可以将 Firebase Auth 与设置您自己的 OAuth2 服务器结合使用。这是一个很好的基础!我个人使用 Firebase Auth 和 Firebase Sign-In(以及 Firebase Hosting 和 Firebase Functions)作为我的 OAuth2 实现的基础。
不确定这里是否适合回答这个问题。这不是必要的 100% 编码问题,但也不是编码问题。不管怎样,这里是
故事:我想创建一个购物系统。用户可以使用网站或手机应用程序或google助手获取商品信息并通过该购物系统进行购买。我面临的问题是 我如何关联这 3 个客户端中的用户。更具体地说是 google assistant/actions.
我做过的事情: 使用 firebase auth for authenticate and login users onto the website or the mobile applications. After the user is authenticated and a firebase access token is available for the website or mobile app to use. The website or the mobile app can send the firebase access token to the backend server, and the backend server can verify this accessToken through firebase admin sdk. Everything is working as expected until I want to introduce the google actions/assistant 发挥作用。
对于 google assistant/actions: 我按照 this and
问题:
- 在我从 google 操作登录中获取用户 ID、电子邮件等用户配置文件后,我查询后端服务器上的数据库,如果我找到具有此 ID 或电子邮件的用户,那么这是一个有效且经过身份验证的用户,我将允许该用户通过 google 助手进行购买。 这种方法在 google actions/assistant 上识别用户安全可靠吗?
- 假设上述方法是安全可靠的,如果用户帐户是使用其他电子邮件帐户而不是 google 帐户创建的,我该怎么办? 即用户最初通过 firebase 身份验证使用非 google 电子邮件或其他 Oauth2(fb、twitter 等)在网站或移动应用程序上注册。在这种情况下,我的后端数据库将没有用户的 google 帐户信息,如果用户使用 google 帐户登录我的 google 操作应用程序,我将无能为力在现有用户数据库中识别此用户。
- 有没有办法 authenticate/login 用户通过 firebase 身份验证进入 google 动作应用,并在 google 动作上获得 firebase 访问令牌' fulfillment backend server? 如果有办法做到这一点,我想之前的问题就不会存在了,因为无论用户帐户是否存在,我都可以使用这个firbase token来验证用户使用 google 帐户或其他电子邮件帐户或其他 Oauth2 提供商创建。
- 如果上述所有方法都失败了,是否可以放弃 firebase 身份验证并创建我的 Oauth 2 服务?这将是我唯一可用的备份计划吗?
您的问题的一些答案:
如果 ID 或电子邮件匹配 - 这是否可以识别用户?
好吧,是也不是。
如果 ID 匹配,则您已验证登录帐户的 Google ID 与您记录的 Google 帐户匹配。伟大的!这是安全的,您可以信任它。
如果 email 匹配...嗯...可信度低得多。虽然 Google 确实会进行选择加入检查,但这看起来仍然像是在冒险。电子邮件地址 do 随时间变化。
如果他们通过其他方式进行身份验证怎么办?
我对这个问题的总结是否正确?
我想我不确定在任何其他情况下你会如何处理这个问题。如果他们使用与用于网络时不同的帐户(不是电子邮件、帐户)登录您的智能助理应用...他们希望两者不同?
并且他们可以使用不同于他们用于设置设备的Google 帐户登录您的 操作。有些流程鼓励他们使用相同的流程,但他们不必这样做,如果您没有记录他们默认使用的帐户,您可以回退到其他流程。
我不能只使用 Firebase Auth 吗?
嗯...不,是的。
不,没有办法只告诉智能助理给你一个 Firebase 授权令牌而不是它想要给你的令牌。
但是,如果您愿意设置自己的 OAuth2 服务器,则可以使用 Firebase Auth。上面 Whosebug 问题的 link 只是试图解决必须自己设置 OAuth2 服务器的问题。如果您设置了一个,您可以让他们使用 Firebase 登录登录,生成令牌并将其存储在他们的 Firebase ID 中,然后将该令牌颁发给 Assistant 客户端。取回该令牌后,您可以轻松地将其关联回 Firebase ID。
但是 您需要完成这项工作。 Firebase 和 Google 助理都不会为您做这件事。
(Firebase 和 Google Cloud 错失良机,恕我直言。但是...)
您已经看过有关如何构建最小 OAuth2 服务器的页面。
我应该放弃 Firebase Auth 吗?
没有必要。您可以将 Firebase Auth 与设置您自己的 OAuth2 服务器结合使用。这是一个很好的基础!我个人使用 Firebase Auth 和 Firebase Sign-In(以及 Firebase Hosting 和 Firebase Functions)作为我的 OAuth2 实现的基础。