使用火力地堡验证我刚刚开始,我跟着一些教程,包括火力地堡的文档,但无论我做什么,FirebaseAuth.getInstance()始终返回null。 想了很久之后,我决定删除我所做的一切相关的认证,并重新开始,所以我只用FirebaseAuth变量的声明和初始化,如下所示: 在类变量中初始化:
private FirebaseAuth mAuth;
然后在onCreate()方法中,我调用了一个用于初始化firebase的变量和引用的方法,所以我在调用以下方法:
private void initFirebase() //initialize firebase
{
FirebaseApp.initializeApp(this);
mAuth = FirebaseAuth.getInstance();
mFirebaseDatabase=FirebaseDatabase.getInstance();
mDatabaseReference=mFirebaseDatabase.getReference().child("users");
mEventsReference=mFirebaseDatabase.getReference().child("events");
mStorageRef= FirebaseStorage.getInstance().getReference();
defaultRef = mStorageRef.child("usersProfilePic/"); //Assigning default reference for storage
}
我对build.gradle的依赖是:
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
/*dataBinding {
enabled = true;
}*/
defaultConfig {
applicationId "com.example.android.aln4"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
multiDexEnabled true
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
//noinspection GradleCompatible
testImplementation 'junit:junit:4.12'
//google maps api
implementation 'com.google.android.gms:play-services-maps:16.0.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'com.google.android.gms:play-services-places:16.0.0'
//Firebase
implementation 'com.google.firebase:firebase-crash:16.2.1'
implementation 'com.firebase:firebase-client-android:2.5.2'
implementation 'com.google.firebase:firebase-core:16.0.6'
implementation 'com.google.firebase:firebase-database:16.0.6'
implementation 'com.firebase:firebase-client-android:2.5.2'
implementation 'com.firebaseui:firebase-ui-database:2.1.1'
implementation 'com.google.firebase:firebase-storage:16.0.5'
implementation 'com.google.firebase:firebase-firestore:18.0.0'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
implementation 'com.google.firebase:firebase-auth:16.1.0'
implementation 'com.google.android.gms:play-services-auth:16.0.1'
//Calendar
implementation 'com.github.alamkanak:android-week-view:1.2.6'
implementation 'com.github.sundeepk:compact-calendar-view:3.0.0'
implementation 'com.github.khacpv:Calendar-Day-View:1.0.5'
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
//Image tools
implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0'
implementation 'com.squareup.picasso:picasso:2.5.2'
implementation 'de.hdodenhof:circleimageview:2.1.0'
//Validation
implementation 'com.basgeekball:awesome-validation:2.0'
//Notification badge
implementation 'com.nex3z:notification-badge:0.1.0'
//Others
implementation 'com.kevin:loopview:1.4.1'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
apply plugin: 'com.google.gms.google-services'
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true
在Firebase身份验证网站本身中,我已经在登录方法中启用了身份验证服务。
所以,如果任何人都可以告诉我这里出了什么问题,我很乐意,因为我花了最后6个小时来弄清楚这件事...
答案 0 :(得分:0)
getInstance()用于检查用户是否已登录。 null表示您尚未登录。
答案 1 :(得分:0)
documentation至少告诉FirebaseApp.initializeApp(this);
返回什么:
默认
FirebaseApp
(如果先前已初始化),则字符串资源中存在或Firebase API密钥。否则返回null
。
请确保在build.gradle
块后的android
底部应用Google Services插件,因为这是API keys in string resources
的来源。
这是FirebaseAuth.getInstance()
返回null
的唯一逻辑解释。
这一次被添加了两次:com.firebase:firebase-client-android:2.5.2
。
版本不匹配可以通过排除来解决:
implementation ("com.firebaseui:firebase-ui-database:2.1.1") {
exclude group: "com.android.support", module: "recyclerview-v7"
}
,以便它将改用com.android.support:recyclerview-v7:28.0.0
。
答案 2 :(得分:-1)
将此添加到您的清单中
<service android:name="com.google.firebase.components.ComponentDiscoveryService">
<meta-data
android:name="com.google.firebase.components:com.google.firebase.auth.FirebaseAuthRegistrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
如果存在相同的服务,请添加simpy元数据标记。