为什么FirebaseAuth.getInstance().getCurrentUser()在android中返回空值

为什么FirebaseAuth.getInstance().getCurrentUser()在android中返回空值,android,firebase,firebase-authentication,firebase-storage,Android,Firebase,Firebase Authentication,Firebase Storage,我在跟踪 我已经配置了firebase存储url、数据库url、数据库ruletrue,并将google-services.json放在app文件夹中,但当我调试代码时,iTunesr显示空值FirebaseUser=firebaseAuth.getCurrentUser; 。我的密码如下: import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; imp

我在跟踪

我已经配置了firebase存储url、数据库url、数据库ruletrue,并将google-services.json放在app文件夹中,但当我调试代码时,iTunesr显示空值FirebaseUser=firebaseAuth.getCurrentUser; 。我的密码如下:

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

import butterknife.Bind;
import butterknife.ButterKnife;

public class LoginActivity
    extends AppCompatActivity
    implements FirebaseAuth.AuthStateListener
{

    @Bind( R.id.login_button )
    Button loginButton;

    FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();

    @Override
    protected void onCreate( @Nullable Bundle savedInstanceState )
    {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_login );
        ButterKnife.bind( this );
    }

    @Override
    public void onStart()
    {
        super.onStart();
        firebaseAuth.addAuthStateListener( this );
        verifyCurrentUserAndStartMainActivityIfLoggedIn();
    }

    @Override
    public void onStop()
    {
        super.onStop();
        firebaseAuth.removeAuthStateListener( this );
    }

    public void onLoginClicked( View view )
    {
        loginButton.setEnabled( false );
        firebaseAuth.signInAnonymously();
    }

    @Override
    public void onAuthStateChanged( @NonNull FirebaseAuth firebaseAuth )
    {
        verifyCurrentUserAndStartMainActivityIfLoggedIn();
    }

    private void verifyCurrentUserAndStartMainActivityIfLoggedIn()
    {
        FirebaseUser user = firebaseAuth.getCurrentUser();

        if ( user != null )  //HERE I AM GETTING "user=null" ??
        {

            startActivity( new Intent( this, MainActivity.class ) );
            Toast.makeText(this,"Login success",Toast.LENGTH_LONG).show();
            finish();
        }
        else
        {
            loginButton.setEnabled( true );
        }
    }

}
public class MainActivity extends AppCompatActivity
{

    static final int REQUEST_IMAGE_CAPTURE = 1;

    FirebaseDatabase database = FirebaseDatabase.getInstance();

    FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();

    DatabaseReference databaseReference = database.getReference( "messages" );

    FirebaseStorage storage = FirebaseStorage.getInstance();

//    StorageReference storageRef = storage.getReferenceFromUrl( "gs://funchat-ef3ed.appspot.com" );
    StorageReference storageRef = storage.getReferenceFromUrl( "gs://fir-imagesending-1a8c1.appspot.com");
当用户成功登录后=null下一个活动现在显示下一个活动的示例url

//    StorageReference storageRef = storage.getReferenceFromUrl( "gs://funchat-ef3ed.appspot.com" );
我在firebase中创建了新的存储,url是:

 StorageReference storageRef = storage.getReferenceFromUrl( "gs://fir-imagesending-1a8c1.appspot.com");
当我使用上述url时,应用程序崩溃。代码如下:

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

import butterknife.Bind;
import butterknife.ButterKnife;

public class LoginActivity
    extends AppCompatActivity
    implements FirebaseAuth.AuthStateListener
{

    @Bind( R.id.login_button )
    Button loginButton;

    FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();

    @Override
    protected void onCreate( @Nullable Bundle savedInstanceState )
    {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_login );
        ButterKnife.bind( this );
    }

    @Override
    public void onStart()
    {
        super.onStart();
        firebaseAuth.addAuthStateListener( this );
        verifyCurrentUserAndStartMainActivityIfLoggedIn();
    }

    @Override
    public void onStop()
    {
        super.onStop();
        firebaseAuth.removeAuthStateListener( this );
    }

    public void onLoginClicked( View view )
    {
        loginButton.setEnabled( false );
        firebaseAuth.signInAnonymously();
    }

    @Override
    public void onAuthStateChanged( @NonNull FirebaseAuth firebaseAuth )
    {
        verifyCurrentUserAndStartMainActivityIfLoggedIn();
    }

    private void verifyCurrentUserAndStartMainActivityIfLoggedIn()
    {
        FirebaseUser user = firebaseAuth.getCurrentUser();

        if ( user != null )  //HERE I AM GETTING "user=null" ??
        {

            startActivity( new Intent( this, MainActivity.class ) );
            Toast.makeText(this,"Login success",Toast.LENGTH_LONG).show();
            finish();
        }
        else
        {
            loginButton.setEnabled( true );
        }
    }

}
public class MainActivity extends AppCompatActivity
{

    static final int REQUEST_IMAGE_CAPTURE = 1;

    FirebaseDatabase database = FirebaseDatabase.getInstance();

    FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();

    DatabaseReference databaseReference = database.getReference( "messages" );

    FirebaseStorage storage = FirebaseStorage.getInstance();

//    StorageReference storageRef = storage.getReferenceFromUrl( "gs://funchat-ef3ed.appspot.com" );
    StorageReference storageRef = storage.getReferenceFromUrl( "gs://fir-imagesending-1a8c1.appspot.com");

我找不到我丢失的地方?

如果没有,你必须允许匿名登录,然后以匿名方式。。。
或者,您可以使用firebase为此提供的google登录,首先允许用户在firebase控制台中使用google登录,然后将所有实例存储为singleton类。有了更多的安全性,这将很容易做到。

您的代码似乎远远不是官方代码

确保在firebase控制台中启用了匿名登录 使用回调mAuth.signinanoymously.addOnCompleteListener匿名登录 在onComplete中,观察Task.isSuccessful是否为true,如果不是,则观察Task.getException返回的内容。 并且始终遵循官方文档,而不仅仅是您在github上找到的某个人 如果您真的想知道为什么FirebaseUser为null,请阅读


如果您发布异常,我可以帮助您。

您在firebase控制台中启用匿名登录了吗?如果是,请以匿名方式使用。addOnCompleteListener。。。因此,您可以在callback@VizGhar我已启用fire base的匿名登录。