我在尝试在 Android 应用程序中创建用户管理系统时遇到 Firebase 管理 SDK 和 Firebase 身份验证问题。
因此,当管理员帐户登录应用程序时,用户管理应该处于活动状态。 否则,当用户登录用户管理系统时应该处于非活动状态。 当我尝试在 build.gradle 文件中使用 Firebase 身份验证实现 Firebase Admin SDK 时。
dependencies {
implementation 'com.google.firebase:firebase-auth:22.3.1'
implementation platform('com.google.firebase:firebase-bom:32.8.0')
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.11.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.firebase:firebase-admin:9.2.0'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
implementation 'androidx.recyclerview:recyclerview:1.3.2'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}
Firebase 身份验证覆盖了一些库,我无法获取所有用户的列表。如果我删除依赖项
implementation 'com.google.firebase:firebase-auth:22.3.1'
,我将无法使用FirebaseUser
public List<FirebaseUser> getUsers() throws FirebaseAuthException {
FirebaseAuth auth1 = FirebaseAuth.getInstance();
List<FirebaseUser> users = auth1.getUsers(uids);
return users;
}
但是IDEA无法识别admin SDK的方法。
当您使用以下依赖项时:
implementation 'com.google.firebase:firebase-auth:22.3.1'
这意味着您正在尝试使用 Firebase Authentication 客户端 SDK,而不是 Firebase Admin SDK,后者是一组服务器库,可让您从特权环境与 Firebase 进行交互。
如果您想将自己的服务器与 Firebase 身份验证集成,那么我建议您使用 Admin Auth API。
当涉及到客户端 SDK 时,请注意 FirebaseAuth 类不包含任何
.getUsers()
方法,因此会出现该错误。另一方面,Firebase Admin SDK 允许使用名为 .getUsersAsync()
的方法检索用户列表。
因此,请选择更适合您应用程序用例的服务,不要混合使用它们,因为这两种服务有不同的用途。
附注当您使用时:
implementation platform('com.google.firebase:firebase-bom:32.8.0')
无需指定Auth的版本,可以简单为:
implementation 'com.google.firebase:firebase-auth'