如何通过iOS(swift)将Firebase Auth与MySQL DB同步?

时间:2019-02-15 06:45:04

标签: ios mysql swift firebase firebase-authentication

我正在iOS应用程序中构建“注册/登录/保存”功能。

对于“注册/登录”,我选择“ Firebase Auth”。
但是,Firebase Auth只能保存基本属性(例如电子邮件地址,密码,URL等)
因此,为了保存用户的其他属性,我计划单独使用其他MySQL数据库。(通过制作用户数据库,用户表,用户ID主键和其他列)

要与Firebase Auth和MySQL通信,我发现必须进行用户验证。
然后将使用JWT(Json Web令牌)进行验证。

但是,为了使用JWT验证用户,我认为Firebase Auth和MySQL必须预先具有公共密钥(例如,用户ID,电子邮件地址等)。

但是我不确定这是否是常见的方式(简单又安全)。

我读了多个线程,

Securely store Android Firebase Auth users in a MySQL database
Can i build an Android app that uses Firebase authentication but a custom database(eg MySQL)
Firebase, how to use auth service with a node.js RESTapi backend

但是我无法完成此过程的第一步。

我现在有疑问。



问题1。到目前为止,我所了解的是正确的?

问题2。要验证用户,在“注册”步骤中,我是否需要预先在Firebase Auth和MySQL中存储公用密钥?

问题2-1-1。 (如果是的话)在Firebase Auth和MySQL中使用相同的数据会不会带来安全问题? (当然,我不能在MySQL中保存任何其他私有数据(密码,电话号码等))

问题2-1-2。 (如果是)您如何看待通用密钥的最佳数据? (用户ID,电子邮件地址,自动增加的用户ID等)

问题2-2。 (如果没有)如何通过iOS同步Firebase和MySQL?

问题3。那整个过程是正确的吗?

  1. 设置iOS,Firebase身份验证,MySQL
  2. 用户注册后,电子邮件地址(可能还有用户ID)将同时发送到Firebase Auth和MySQL。但是密码只会发送到Firebase。
  3. 在登录期间,如果用户设置并保存首选项,则iOS会将数据发布到MySQL的“用户”表中的“用户ID”行。
  4. 当用户再次登录时,iOS将从Firebase Auth获取令牌并发送到MySQL。
  5. 令牌将通过比较解密的令牌和MySQL公共密钥来验证用户。
  6. 如果通过验证,则MySQL会将用户的其他属性发送到iOS。
  7. iOS将获取用户的属性数据。



这是我第一次构建此功能。
请回答我的问题!
预先谢谢你!



1 个答案:

答案 0 :(得分:1)

否,您不需要预先存储公用密钥。

当用户登录时,您将在客户端(iOS设备)上获得一个JWT。然后,将此JWT附加到针对服务器的每个请求的标头。然后,在您的服务器上,您将使用此JWT向Firebase进行身份验证,如果成功,它将返回您的用户ID。而且您可以将其存储在数据库中。