我正在按照Udacity的教程开发Firebase android应用程序。

在遍历文档后,我无法找到该解决方案,因此IDE将setProviders方法标记为已弃用。有什么办法可以解决问题。
这是代码:

    mMessagesDatabaseReference.addChildEventListener(mChildEventListener);
    mAuthStateListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if (user != null){
                Toast.makeText(MainActivity.this,"You are signed in, Welcome", Toast.LENGTH_SHORT).show();
            }else{
               startActivityForResult(
                       AuthUI.getInstance()
                                        .createSignInIntentBuilder()
                                        .setIsSmartLockEnabled(false)
                                        .setProviders(
                                                AuthUI.EMAIL_PROVIDER,
                                                AuthUI.GOOGLE_PROVIDER
                                                )
                                        .build(),
                                        RC_SIGN_IN);
            }
        }
    };

}

最佳答案

更新:您现在可以使用setAvailableProviders()代替不推荐使用的setProviders()
用法示例:

startActivityForResult(
    AuthUI.getInstance()
            .createSignInIntentBuilder()
            .setAvailableProviders(Arrays.asList(
                    new AuthUI.IdpConfig.EmailBuilder().build(),
                    new AuthUI.IdpConfig.GoogleBuilder().build(),
                    new AuthUI.IdpConfig.FacebookBuilder().build()))
            .build(),
    RC_SIGN_IN);

资料来源:Firebase UI for Auth

谢谢@Alexey

以下解决方案可以使用,但已不建议使用:

我也遵循相同的教程,并最终在这里寻找解决方案。我试图自己找到一个解决方案,并找到了解决方案。 setProviders()有两种重载方法。已弃用 setProviders(String ... provider)的那个。我使用了 setProviders(List idpConfigs)。下面是代码:

首先创建IdpConfig的List实例,在创建FirebaseDatabase实例的地方执行此操作。换句话说,在所有方法之外和类中执行此操作。
List<AuthUI.IdpConfig> providers;

将其写在您的 onCreate()中:
providers = new ArrayList<>();

然后用以下代码替换您的代码:
mMessagesDatabaseReference.addChildEventListener(mChildEventListener);
mAuthStateListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if (user != null){
                Toast.makeText(MainActivity.this,"You are signed in, Welcome", Toast.LENGTH_SHORT).show();
            }else {
                providers.add(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build());
                providers.add(new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build());
                startActivityForResult(
                        AuthUI.getInstance()
                        .createSignInIntentBuilder()
                                .setIsSmartLockEnabled(false)
                                .setProviders(providers)
                        .build(),
                        RC_SIGN_IN);
            }
        }
    };

你完成了!
祝你有美好的一天 :)

10-07 19:30
查看更多