SetProviders方法已标记为已弃用

Jaw*_*mro 11 android firebase firebase-authentication

我正在按照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);
            }
        }
    };

}
Run Code Online (Sandbox Code Playgroud)

Pul*_*lak 20

更新:您现在可以使用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);
Run Code Online (Sandbox Code Playgroud)

来源:Auth的Firebase用户界面

谢谢@Alexey

下面的解决方案可以使用但已被弃用:

我也遵循相同的教程,最终在这里寻找解决方案.我试图找到一个解决方案,并找到了解决方案.setProviders()有两种重载方法.与一个setProviders(字符串...提供商)已被弃用.我使用了setProviders(List <IdpConfig> idpConfigs).以下是代码:

首先创建IdpConfig的List实例,在创建FirebaseDatabase实例的位置执行此操作.换句话说,在所有方法之外和课堂内进行此操作.

List<AuthUI.IdpConfig> providers;
Run Code Online (Sandbox Code Playgroud)

在你的onCreate()中写下这个:

providers = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

然后用以下代码替换你的代码:

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);
            }
        }
    };
Run Code Online (Sandbox Code Playgroud)

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


Sal*_*ore 5

您应该在以下链接中使用setAvailableProviders()而不是setProvidersFirebaseUI示例中显示的内容:https: //github.com/firebase/FirebaseUI-Android/blob/master/auth/README.md#sign-in-examples