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);
}
}
};
}
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 :)
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
Il suffit de remplacer "setProvider" par "setAvailableProviders", cela fonctionnera.
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()
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"
...}