如何在Android模块中使用FirebaseAuth

时间:2017-06-23 11:00:52

标签: android firebase firebase-authentication

我正在开发一个聊天库,我想在其中显示登录用户的对话。制作库的原因是我想将它集成到多个项目中。

我现在面临的问题是,dat$id <- row.names(dat)表示用户未登录(FirebaseAuth始终返回FirebaseAuth.getInstance(mFirebaseApp).getCurrentUser()),即使用户在应用内进行了身份验证

模块/库如何知道用户已通过身份验证?

我正在尝试以下代码:

null

2 个答案:

答案 0 :(得分:8)

您需要添加一个侦听器/观察者来获取每个身份验证状态更改的用户标识。

FirebaseAuth.getInstance().addAuthStateListener(firebaseAuth -> {
            if (firebaseAuth.getCurrentUser() == null) {
                your code goes here
            }
        });

https://firebase.google.com/docs/auth/android/manage-users

另一种方法是登录获取用户ID并存储在LocalStorage中,同时注销清除localstorage,这样您就可以在离线状态下维护。

答案 1 :(得分:1)

在Android中,FirebaseApp对象管理所有Firebase API的配置。这在应用程序启动时由内容提供商自动初始化,您通常永远不需要与其进行交互。但是,当您想要从单个应用程序访问多个项目时,您需要一个独特的FirebaseApp来单独引用每个项目。

在初始化第二个项目之前,请确保已初始化Firebase defaultApp实例。从您的基础/主项目的Application类调用FirebaseDatabase.getInstance() - OnCreate(),如下所示,

// Primary project database
FirebaseDatabase database = FirebaseDatabase.getInstance();

要从库项目连接第二个项目数据库,请使用辅助配置初始化FirebaseApp以及一些不同的标识符(例如:“secondary”),如下所示,

FirebaseOptions options = new FirebaseOptions.Builder()
       .setApplicationId("1:530266078999:android:481c4ecf3253701e") // Required for Analytics.
       .setApiKey("AIzaSyBRxOyIj5dJkKgAVPXRLYFkdZwh2Xxq51k") // Required for Auth.
       .setDatabaseUrl("https://project-1765055333176374514.firebaseio.com/") // Required for RTDB.
       .build();
FirebaseApp.initializeApp(this /* Context */, options, "secondary");

然后检索secound App

// Retrieve the second app.
FirebaseApp secondApp = FirebaseApp.getInstance("secondary");
// Get the database of second app.
FirebaseDatabase secondaryDatabase = FirebaseDatabase.getInstance(secondApp);
  

注意:在您的图书馆模块中,请务必参考您的图书馆   第二个项目。更好地创建单例引用

// Make singleton reference
public static FirebaseApp getFirebaseApp() {
    if (mFirebaseApp == null) {
        Context context = getAppContext();
        FirebaseOptions options = getLibraryModuleFirebaseOptions();
        mFirebaseApp = FirebaseApp.initializeApp(context, options, "library");
    }
    return mFirebaseApp;
} 

有关详细信息,请参阅Firebase博客文章here

希望这会对你有所帮助..