web-dev-qa-db-fra.com

SetProviders, la méthode est marquée comme obsolète

Je développe l'application Android Firebase à la suite du didacticiel d'Udacity. 

La méthode setProviders est marquée comme obsolète par l'IDE. Après avoir parcouru la documentation, je n'ai pas trouvé la solution. Existe-t-il un moyen de résoudre le problème Voici le code: 

    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);
            }
        }
    };

}
10
Pheonix

UPDATE: Vous pouvez maintenant utiliser setAvailableProviders() à la place de la setProviders() obsolète

Exemple d'utilisation:

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);

Source: Interface utilisateur Firebase pour Auth

Merci @ Alexey

La solution ci-dessous fonctionnera mais est déconseillée:

Je suis également le même tutoriel et je me suis retrouvé ici à chercher la solution. J'ai essayé de trouver une solution moi-même et je l'ai trouvée. Il existe deux méthodes surchargées pour setProviders () . Celui avec setProviders (String ... providers) est obsolète. J'ai utilisé setProviders (Liste <IdpConfig> idpConfigs) . Ci-dessous le code: 

Commencez par créer une instance List de IdpConfig, puis créez une instance de FirebaseDatabase. En d'autres termes, faites-le en dehors de toutes les méthodes et à l'intérieur de votre classe.

List<AuthUI.IdpConfig> providers;

Ecrivez ceci dans votre onCreate () :

providers = new ArrayList<>();

Puis remplacez votre code par ceci:

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);
            }
        }
    };

Vous avez terminé! Passez une bonne journée :)

19
Pulak

Vous devez utiliser setAvailableProviders() au lieu de setProviders comme indiqué dans l'exemple FirebaseUI au lien suivant: https://github.com/firebase/FirebaseUI-Android/blob/master/auth/README.md#sign -en-example

5
Salvatore

Il suffit de remplacer "setProvider" par "setAvailableProviders", cela fonctionnera.

4
A.Imam

Au lieu de cette ligne: 

setProviders(
             AuthUI.EMAIL_PROVIDER,
             AuthUI.GOOGLE_PROVIDER)
            .build()

Dans la nouvelle version de FirebaseAuth 11.4.2, utilisez setAailableProviders au lieu de setProviders As Follow: 

setAvailableProviders(
Arrays.asList(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),
              new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build()))
              .build()
1
shams keshk

Vérifiez que votre émulateur et votre niveau d'API de génération sont identiques et n'émulent pas à un niveau d'API supérieur. L'erreur des services de jeu de Google venait de cela pour moi. 

Vérifiez ceci dans le fichier build.gradle;

exemple ci-dessous est API niveau 24

Android {
compileSdkVersion 24
buildToolsVersion "24.0.1"
...}
0
J Magoo