gpt4 book ai didi

java - 安卓火力地堡 : Second Connected Database not allowing auth in rules

转载 作者:行者123 更新时间:2023-11-30 10:12:11 26 4
gpt4 key购买 nike

我已经连接了来自同一个 firebase 项目的两个数据库,如下所示。

    //init the default db;
FirebaseApp.initializeApp(this);

//init the second db;
FirebaseOptions.Builder builder = new FirebaseOptions.Builder();
builder.setApplicationId("id"); //Same as default
builder.setApiKey("key"); //Same as default
builder.setDatabaseUrl("https://second-db.firebaseio.com");

try {
FirebaseApp.initializeApp(this, builder.build(), "second-db");
} catch (IllegalStateException e) {
e.printStackTrace();
}

获取引用。

public static DatabaseReference getSecondDbRef(String child) {
FirebaseApp app = FirebaseApp.getInstance("second-db");
return FirebaseDatabase.getInstance(app).getReference(child);
}

有了上面的方法,它就可以工作了,但是第二个数据库中的规则似乎没有得到授权。如果我这样做。

 {
"rules":{
"users":{
"$uid":{
".read":"auth.uid !== null",
// ".read":true // This works, so the issue is auth
}
}
}
}

读取失败,即使用户已通过身份验证,而且默认数据库不存在此问题。 init 有什么我遗漏的吗?

好的,由于下面的重点,这是应用程序中的代码。

    private static final String  TEAMS_BD_ID   = "second-db"

public void initFirebase() {
FirebaseApp.initializeApp(this);

FirebaseOptions.Builder builder = new FirebaseOptions.Builder();
builder.setApplicationId("appId"); // //Same as default
builder.setApiKey("key"); // //Same as default
builder.setDatabaseUrl("https://teams-db.firebaseio.com");//Second Db

try {
FirebaseApp.initializeApp(this, builder.build(), TEAMS_BD_ID);
} catch (IllegalStateException e) {
e.printStackTrace();
}
}

public static FirebaseApp getTeamsApp() {
return FirebaseApp.getInstance(TEAMS_BD_ID);
}

public static String getTeamsUserUid() {
return FirebaseAuth.getInstance(getTeamsApp()).getCurrentUser().getUid();
}

public static DatabaseReference getTeamsRef(String child) {
return FirebaseDatabase.getInstance(getTeamsApp()).getReference(child);
}

public static DatabaseReference getTeamsRef() {
return FirebaseDatabase.getInstance(getTeamsApp()).getReference();
}

然后尝试阅读。

DatabaseReference r = getTeamsRef().child("users/" + getTeamsUserUid() + "/teams") 
// getTeamsUserUid() This is null.

最佳答案

这只是一个猜测。

如果您使用 FirebaseAuth#getInstance()要获取 auth 实例,请将其更改为 FirebaseAuth#getInstance(FirebaseApp firebaseApp)与第二个应用程序实例。

关于java - 安卓火力地堡 : Second Connected Database not allowing auth in rules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51999640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com