Firebase实时数据库长值始终返回0,即使它不是

时间:2017-10-21 08:38:46

标签: java android firebase firebase-realtime-database firebase-authentication

我一直试图寻找解决方案很长一段时间,但无济于事。我显然不是Firebase专家,我还在学习如何编码。

我目前正在创建一个登录系统,在Firebase提供的电子邮件验证系统之上,还有另一层我自己手动完成的身份验证。因此,为实现这一目标,我将Firebase实时数据库引入了我的项目。以下是数据库中JSON文件的片段。

Private Sub CommandButton1_Click() 'Saving Button
    Dim sonsat As Long

    sonsat = Sheets("Daily").Cells(Rows.Count, 1).End(xlUp).Row + 1
    Call Main 'Progress Bar

    Cells(sonsat, 1) = TextBox1
    Cells(sonsat, 2) = TextBox2
    Cells(sonsat, 3) = TextBox3
    Cells(sonsat, 4) = TextBox4
    Cells(sonsat, 5) = TextBox5

    MsgBox "Registration is successful"
    ListBox1.List = Sheets("Daily").Range("A2:E" & Cells(Rows.Count, 1).End(xlUp).Row).Value 'For refresh listbox
    TextBox14.Value = ListBox1.ListCount
End Sub

从JSON文件中可以看出,app_authorized键值对将决定用户是否可以登录(0表示用户不符合条件,1表示用户有资格登录)。我使用来自Firebase登录的用户UID,电子邮件和密码系统用于所有键值对的父级。我也知道app_authorized的值类型很长。

以下是我在SignInActivity中使用的代码。

{
 "users" : {
  "abfkbnqeiurbnafjbnaojn" : {
   "app_authorized" : 1,
   "email" : "example51245@gmail.com",
   "full_name" : "Test Sample",
   "user_id" : "abfkbnqeiurbnafjbnaojn"
  }
 }
}

我遇到的问题是isAppAuthorized long总是返回0,无论我放入数据库的值是多少,因此,我的第二层授权无效。

我希望有人能够帮助我解决这个问题,因为我尝试了很多东西,但仍然无法理解问题的根源。

1 个答案:

答案 0 :(得分:1)

使用:

isAppAuthorized = dataSnapshot.getValue(Integer.class);