firebase createUserWithEmailAndPassword在android中不起作用

时间:2016-06-08 16:15:46

标签: android firebase createuser

我尝试使用createUserWithEmailAndPassword方法创建用户但无法执行此操作。 正在调用OnAuthenticate方法,但用户对象为null,并且没有在firebase控制台内创建用户。 这是我的代码,也是在线提供的代码。

MAinActivity.java

private static FirebaseAuth mAuth;
private static FirebaseAuth.AuthStateListener mAuthListener;
private static String TAG = "RegisterDEbug";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_main);
    mAuth = FirebaseAuth.getInstance();
    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            waitForDebugger();
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if (user != null) {
                // User is signed in
                Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
            } else {
                // User is signed out
                Log.d(TAG, "onAuthStateChanged:signed_out");
            }
            // ...
        }
    };
    mAuth.addAuthStateListener(mAuthListener);
    mAuth.createUserWithEmailAndPassword("9199999989@pintech.com", "corrfecthorsebatterystaple")
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    waitForDebugger();
                    Log.d(TAG, "Authentication successful");
                    if (!task.isSuccessful()) {
                        //Toast.makeText(this, "Authentication failed.",  Toast.LENGTH_SHORT).show();
                    }
                }
            });
}

app.properties

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'

        classpath 'com.google.gms:google-services:3.0.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

app.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.pt.reg"
        minSdkVersion 10
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.google.android.gms:play-services:9.0.2'
    //compile 'com.google.android.gms:play-services-auth:9.0.2'

    compile 'com.google.firebase:firebase-core:9.0.2'
    compile 'com.google.firebase:firebase-auth:9.0.2'
}

apply plugin: 'com.google.gms.google-services'

注意 -  我已经尝试过firebase的web解决方案来创建一个工作正常的用户。

8 个答案:

答案 0 :(得分:17)

I had this problem too. The password I was testing the app with was just too short. I extended it to a longer password and it worked. You have to meet google's password complexity standards.

答案 1 :(得分:1)

我有同样的问题。

变化:

mAuth.createUserWithEmailAndPassword("9199999989@pintech.com", "corrfecthorsebatterystaple")
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>()

为:

mAuth.createUserWithEmailAndPassword("9199999989@pintech.com", "corrfecthorsebatterystaple")
            .addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>()

答案 2 :(得分:1)

我花了2天的时间来寻找这种解决方案,却发现这是由于模拟器造成的。尝试使用智能手机运行您的应用。对我来说,它奏效了。

答案 3 :(得分:1)

对我来说,我解决这个问题的方法首先是确保我在 firebase 中启用了电子邮件/密码 signInAuth

最后我确定了这条线

mAuth.createUserWithEmailAndPassword(username,password)
                .addOnCompleteListener(**SignUpActivity.this**, task -> { 

... }) 有 myactivity.this 而不是 this 单独作为上下文

答案 4 :(得分:0)

在Firebase控制台上启用电子邮件/密码输入方法 身份验证->登录方法:
Authentication-->sign-in method

答案 5 :(得分:0)

我认为问题在于您可能未在应用程序中添加firebase SDK。

在模块(应用程序级)Gradle文件(app/build.gradle)的依赖项中添加以下实现:

dependencies {
       implementation 'com.google.firebase:firebase-auth:19.3.1'
}

答案 6 :(得分:0)

对于那些仍在寻找上面未曾使用过的东西的人来说:

我发现在this的第一个参数中,在.addOnCompleteListener关键字之前使用您的活动名称对我有用。

例如.addOnCompleteListener(LoginActivity.this, etc..);

希望这可以帮助仍在寻找的人, 亚当

答案 7 :(得分:0)

我花了整整2天的时间试图弄清楚这一点,最后发现我的模拟器没有连接到互联网。我在Mac的“网络”偏好设置中输入了DNS服务器,然后输入8.8.8.8,然后重新启动了模拟器。开始工作了!

我遵循的说明: https://medium.com/mobile-app-development-publication/making-android-emulator-connect-to-internet-e7b622a00f09