【问题标题】:Firebase Database Query Not WorkingFirebase 数据库查询不起作用
【发布时间】:2017-10-13 07:53:34
【问题描述】:

我正在尝试创建 Firebase 登录和注册应用程序。我已经设置,在注册时 android id 将保存到数据库中。如果 Android Id 以另一个帐户退出,则用户无法创建帐户。当我运行该应用程序并尝试注册一个帐户时,它显示“正在注册请稍候...”并且没有任何反应。我怎样才能解决这个问题?

【问题讨论】:

  • 你检查DatabaseError里面吗?
  • 没有。我的代码没问题吗?
  • 你在 UserIdQuery 中得到了什么?
  • android 设备 ID。
  • 您的 Android Id 退出逻辑在哪里,用户无法创建帐户?

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


【解决方案1】:

建议您使用Firebase Authentication 来解决此问题以及所有有关身份验证的问题。

它很容易实现,将来您无需维护任何代码。

要查找Android设备的序列号,请使用此代码:

TelephonyManager tManager = (TelephonyManager)myActivity.getSystemService(Context.TELEPHONY_SERVICE);
String androidSerialNumber = tManager.getDeviceId();

拥有这个androidSerialNumber,您可以使用它将它保存在您的数据库中。

0 否决票接受

另一种方法是像这样更改数据库规则:

{ "rules": 
     { ".read": "true",
       ".write": "auth != null"
     }
 }

【讨论】:

  • ? 我不明白。你能写吗?
  • 只要按照官方文档中的步骤(如上链接),您的问题就会得到解决。
  • 没有我想要的方法。我已经使用了电子邮件和传递方法。看我的代码兄弟。?
  • 有。 Firebase 身份验证会为您执行此操作。
  • 或随心所欲地写。请查看我使用的代码。
【解决方案2】:

把代码改成这个。

if(task.isSuccessful()){
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.child(firebaseAuth.getCurrentUser().getUid()).child("Id").setValue(android_id);
progressDialog.dismiss();
startActivity(new Intent(getApplicationContext(), ProfileActivity.class));
finish();
}

当查询被取消时也关闭progressDialog

@Override
        public void onCancelled(DatabaseError databaseError) {
        progressDialog.dismiss();
        }
    });

【讨论】:

  • 它将完成Activity并打开ProfileActivity
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 2016-10-12
相关资源
最近更新 更多