Firebase权限被拒绝崩溃

时间:2017-02-25 04:49:09

标签: android firebase firebase-realtime-database

我已经实施了firebase。  但是当孩子没有权限应用程序崩溃我正在

Fatal Exception: com.google.firebase.database.d
 Firebase Database error: Permission denied
  Listener.onCancelled

我的inCancelled看起来像

@Override
public void onCancelled(DatabaseError databaseError) {
    try {
        Observable.onError(databaseError.toException());
    } catch (DatabaseException e) {
        e.printStackTrace();
    }catch (Exception e){
        e.printStackTrace();
    }
}

但仍然崩溃。我怎么能防止这次崩溃

我说如果有人改变儿童的许可是我们的任何方式 可以阻止这次崩溃

2 个答案:

答案 0 :(得分:0)

这似乎与您的 google-services.json。

有关

确保应用名称客户端ID 相同。

如果您不确定从项目控制台重新下载google-services.json并将其添加到您的项目中。

答案 1 :(得分:0)

如果您将监听器附加到用户没有读取权限的位置,Firebase客户端将在该监听器上调用onCancelled。您当前的代码将此作为例外。

如果您不想提出异常,只需另外处理onCancelled

@Override
public void onCancelled(DatabaseError databaseError) {
    Toast.makeText(
        getApplicationContext(), 
        "You don't have permission to read this data", 
        Toast.LENGTH_SHORT).show();
}

要意识到的一件重要事情是onCancelled被调用几乎总是代码中的错误。这不是您的应用程序的用户做错了,而是将监听器附加到错误位置的代码。因此,向用户显示错误可能不是最好的主意。

为简洁起见,您经常会看到我在示例摘录中引发异常。但由于这是我的代码中的一个错误,在实际的应用程序中我喜欢此错误显示在崩溃报告中:

@Override
public void onCancelled(DatabaseError databaseError) {
    FirebaseCrash.report(databaseError.toException());
}