我有一个iOS应用程序,应用1,使用火力地堡后端,用户可以登录/创建一个帐户使用:共享火力地堡认证/令牌应用程式
- 火力地堡帐户(电子邮件/密码)
- 的Facebook(交换了火力地堡证书认证后)
- 谷歌(认证后调换火力地堡凭证)
这工作得很好。
我有另一个使用Firebase后端的iOS应用程序App2,允许用户使用与App1完全相同的选项登录/创建一个帐户(App2使用与App1完全相同的核心代码使用),并且在此外,第4登录/注册帐户选项:
- 火力地堡帐户(电子邮件/密码)
- 的Facebook(交换进行身份验证后火力地堡凭证)
- 谷歌(认证之后交换了火力地堡凭证)
- 扫描另一台设备上显示的二维码APP1上
运行要使用,在APP1用户点击一个按钮,选项4 QR code sign
“生成QR码”,用于在APP1生成的QR码的数据包含火力地堡凭证uid和显示名。
这一切工作正常。 App2可以读取App1 QR代码中的数据,App2现在可以轻松拥有App1上登录用户的uid和displayName。
现在对于我的应用2跑进当后来试图更新使用从应用1 QR码(UID)的火力地堡数据库的第一个问题,火力地堡错误:“权限被拒绝”:
明白了,已被认证,我的数据库规则清楚地表达这一点,我不知道在此之前,当然我QR码策略:
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
不过,我不希望我的火力地堡的规则是改用公用电话,那会允许任何人访问秒。所以接下来我想,没问题,我只是把用户输入的电子邮件/密码作为App1上生成的QR码中的数据,我的应用程序没有高度安全性问题,然后,当App2扫描App1 QR代码时,App2可以使用从App1 QR代码中读取的电子邮件/密码登录到Firebase。
我的解决方案有一个问题,它不适用于使用Google或Facebook登录App1的用户。在这种情况下,我不会收到他们的电子邮件或密码。
另一个解决方案我很琢磨,但我很肯定不会为我工作,上面提到Firebase“权限被拒绝”是Firebase的signInAnonymously,这对我来说不起作用,因为Firebase用户存在,该用户登录App1,有他们自己的uid,这显然不是由signIn匿名创建的uid。
我在思考的另一个解决方案是使用NSUbiquitousKeyValueStore
与App2共享App1中的Firebase凭证,但我不确定Firebase凭证需要什么才能在App2上重新创建它。我想我仍然需要在App2上拨打Auth.auth().signIn
才能在App2上创建新的有效Firebase会话,即使我通过NSUbiquitousKeyValueStore
从App1共享有效的Firebase凭据/令牌...或其他建议请...
永远,永远,永远暴露一个用户名/密码。如果你这样做,至少告诉他们。 – Multinerd
@Multinerd停止与您的戏剧 –