Sha*_*zal 3 android firebase firebase-authentication
我正在开发一个聊天库,我想在其中显示登录用户的对话.制作库的原因是我想将它集成到多个项目中.
我现在面临的问题是,即使用户在应用程序内部进行了身份验证,FirebaseAuth也表明用户未登录(FirebaseAuth.getInstance(mFirebaseApp).getCurrentUser()始终返回null).
模块/库如何知道用户已通过身份验证?
我正在尝试以下代码:
mAPIKey = getArguments().getString(ConversationModuleConstants.API_KEY_KEY);
mApplicatoinId = getArguments().getString(ConversationModuleConstants.APPLICATION_ID_KEY);
mDatabaseUrl = getArguments().getString(ConversationModuleConstants.DATABASE_URL_KEY);
FirebaseOptions options = new FirebaseOptions.Builder()
.setApiKey(mAPIKey)
.setApplicationId(mApplicatoinId)
.setDatabaseUrl(mDatabaseUrl)
.build();
boolean hasBeenInitialized = false;
List<FirebaseApp> firebaseApps = FirebaseApp.getApps(getActivity());
for (FirebaseApp app : firebaseApps) {
if (app.getName().equals(FIREBASE_APP_NAME)) {
hasBeenInitialized = true;
mFirebaseApp = app;
}
}
if (!hasBeenInitialized) {
mFirebaseApp = FirebaseApp.initializeApp(getActivity(), options, FIREBASE_APP_NAME);
}
if (FirebaseAuth.getInstance(mFirebaseApp).getCurrentUser() == null) {
Toast.makeText(getActivity(), "Login Required!", Toast.LENGTH_SHORT).show();
return;
}
Run Code Online (Sandbox Code Playgroud)
小智 8
您需要添加一个侦听器/ Observer来获取每个身份验证状态更改的用户标识.
FirebaseAuth.getInstance().addAuthStateListener(firebaseAuth -> {
if (firebaseAuth.getCurrentUser() == null) {
your code goes here
}
});
Run Code Online (Sandbox Code Playgroud)
https://firebase.google.com/docs/auth/android/manage-users
另一种方法是登录获取用户ID并存储在LocalStorage中,同时注销清除localstorage,这样您也可以在离线状态下维护.
| 归档时间: |
|
| 查看次数: |
1055 次 |
| 最近记录: |