Android 用于用户身份验证和登录的FirebaseUI,在显示中不显示登录选项
我正在尝试制作一个android应用程序,用户可以通过Firebase用户身份验证和Firebase用户界面使用带有电子邮件和密码的google帐户登录。我已经尝试了以下java代码,这是编写的。我想承认,在这里编写代码时,花括号可能放错了位置,但在android studio中,花括号没有这样的问题。我没有编写activity_main.xml代码,因为我认为FirebaseUI将添加登录流本身。 所有的图片,我认为将有助于指导,附上Android 用于用户身份验证和登录的FirebaseUI,在显示中不显示登录选项,android,firebase-authentication,google-signin,firebaseui,Android,Firebase Authentication,Google Signin,Firebaseui,我正在尝试制作一个android应用程序,用户可以通过Firebase用户身份验证和Firebase用户界面使用带有电子邮件和密码的google帐户登录。我已经尝试了以下java代码,这是编写的。我想承认,在这里编写代码时,花括号可能放错了位置,但在android studio中,花括号没有这样的问题。我没有编写activity_main.xml代码,因为我认为FirebaseUI将添加登录流本身。 所有的图片,我认为将有助于指导,附上 package com.example.finda
package com.example.findaplayer;
导入androidx.annotation.NonNull;
导入androidx.appcompat.app.appcompat活动;
导入android.os.Bundle;
导入android.widget.Toast;
导入com.firebase.ui.auth.AuthUI;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.auth.FirebaseUser;
导入java.util.array;
导入java.util.List;
公共类MainActivity扩展了AppCompatActivity{
私有FirebaseAuth mFirebaseAuth;
私有FirebaseAuth.AuthStateListener mAuthStateListener;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mFirebaseAuth=FirebaseAuth.getInstance();
mAuthStateListener=new FirebaseAuth.AuthStateListener(){
@凌驾
AuthStateChanged上的公共void(@NonNull FirebaseAuth FirebaseAuth){
FirebaseUser=firebaseAuth.getCurrentUser();
如果(用户!=null){
Toast.makeText(MainActivity.this,“欢迎使用findaplayer应用程序”,
吐司。长度(短)。show();
}否则{
//选择身份验证提供程序
列表提供程序=Arrays.asList(
新建AuthUI.IdpConfig.EmailBuilder().build(),
新建AuthUI.IdpConfig.PhoneBuilder().build(),
新建AuthUI.IdpConfig.GoogleBuilder().build(),
新建AuthUI.IdpConfig.FacebookBuilder().build(),
新建AuthUI.IdpConfig.TwitterBuilder().build());
//创建并启动登录意图
startActivityForResult(
AuthUI.getInstance()
.CreateSignInEntBuilder()
.setAvailableProviders(提供程序)
.build(),
1) ;
}
}
};
}
}
我没有在事件日志中得到任何错误,如所附的名为“事件日志”的屏幕截图所示。我面临的问题是,当这个应用程序在模拟器上运行时,它没有显示登录选项,而是显示hello world,而我认为它的显示应该包括登录选项,因为Firebase UI库正用于此目的。您声明了一个
mAuthStateListener
侦听器,但您从未告诉Firebase Auth SDK将其用于:
package com.example.findaplayer;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import com.firebase.ui.auth.AuthUI;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import java.util.Arrays;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private FirebaseAuth mFirebaseAuth;
private FirebaseAuth.AuthStateListener mAuthStateListener ;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mFirebaseAuth = FirebaseAuth.getInstance();
mAuthStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
Toast.makeText(MainActivity.this, "Welcome to findaplayer app",
Toast.LENGTH_SHORT).show();
} else {
// Choose authentication providers
List<AuthUI.IdpConfig> providers = Arrays.asList(
new AuthUI.IdpConfig.EmailBuilder().build(),
new AuthUI.IdpConfig.PhoneBuilder().build(),
new AuthUI.IdpConfig.GoogleBuilder().build(),
new AuthUI.IdpConfig.FacebookBuilder().build(),
new AuthUI.IdpConfig.TwitterBuilder().build());
// Create and launch sign-in intent
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(providers)
.build(),
1) ;
}
}
};
}
}
FirebaseAuth.getInstance().addAuthStateListener(mAuthStateListener);