0

Willkommen allerseits, A habe eine Anwendung in Android-Studio, Ich benutze die Feuerbasis, aber wenn der Benutzer Login von AuthUI einzuloggen von (Facebook oder Google)Android - AuthUI - Feuerbasis funktioniert nicht, wenn sie von Facebook-Login

try { 
     startActivityForResult(
       AuthUI.getInstance() 
         .createSignInIntentBuilder() 
         .setAvailableProviders(
           Arrays.asList(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(), 
             new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build(), 
             new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER).build() 
           )) 
         .build(), 
       RC_SIGN_IN); 
    } catch (Exception e) { 
     Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show(); 
    } 

und der Benutzer Erfolg Login dann die Feuerbasis funktioniert nicht. Wenn ein Benutzer ausloggen

AuthUI.getInstance() 
      .signOut(this) 
      .addOnCompleteListener(new OnCompleteListener<Void>() { 
       public void onComplete(@NonNull Task<Void> task) { 
        // user is now signed out 
        // finish(); 
       } 
      }); 

die Feuerbasis anfangen zu arbeiten normalerweise

+0

wenn funktioniert Feuerbasis nicht? –

+0

während Benutzer von Facebook oder Google eingeloggt ist – Agnes

Antwort

0

Ich benutze dies für meine Google-Zeichen ein und aus. funktioniert super! Sie werden sich natürlich an Ihre Ressourcen anpassen müssen. Wenn das Problem dadurch nicht behoben wird, liegt möglicherweise ein Problem mit der Bibliotheksabhängigkeit vor. lassen Sie mich

public class MainActivity wissen erstreckt AppCompatActivity implementiert GoogleApiClient.OnConnectionFailedListener, View.OnClickListener {

private static final String TAG = "GoogleActivity"; 
private static final int RC_SIGN_IN = 9001; 

// [START declare_auth] 
private FirebaseAuth mAuth; 
// [END declare_auth] 

private GoogleApiClient mGoogleApiClient; 




@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Views 


    // Button listeners 
    findViewById(R.id.sign_in_button).setOnClickListener(this); 
    findViewById(R.id.sign_out_button).setOnClickListener(this); 
    findViewById(R.id.buttonGoChat).setOnClickListener(this); 


    // [START config_signin] 
    // Configure Google Sign In 
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestIdToken(getString(R.string.default_web_client_id)) 
      .requestEmail() 
      .build(); 
    // [END config_signin] 

    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) 
      .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
      .build(); 

    // [START initialize_auth] 
    mAuth = FirebaseAuth.getInstance(); 
    // [END initialize_auth] 
} 

// [START on_start_check_user] 
@Override 
public void onStart() { 
    super.onStart(); 
    // Check if user is signed in (non-null) and update UI accordingly. 
    FirebaseUser currentUser = mAuth.getCurrentUser(); 
    updateUI(currentUser); 
} 
// [END on_start_check_user] 

// [START onactivityresult] 
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); 
    if (requestCode == RC_SIGN_IN) { 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     if (result.isSuccess()) { 
      // Google Sign In was successful, authenticate with Firebase 
      GoogleSignInAccount account = result.getSignInAccount(); 
      firebaseAuthWithGoogle(account); 
     } else { 
      // Google Sign In failed, update UI appropriately 
      // [START_EXCLUDE] 
      updateUI(null); 
      // [END_EXCLUDE] 
     } 
    } 
} 
// [END onactivityresult] 

// [START auth_with_google] 
private void firebaseAuthWithGoogle(GoogleSignInAccount acct) { 
    Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId()); 


    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null); 
    mAuth.signInWithCredential(credential) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        if (task.isSuccessful()) { 
         // Sign in success, update UI with the signed-in user's information 
         Log.d(TAG, "signInWithCredential:success"); 
         FirebaseUser user = mAuth.getCurrentUser(); 
         updateUI(user); 
        } else { 
         // If sign in fails, display a message to the user. 
         Log.w(TAG, "signInWithCredential:failure", task.getException()); 
         Toast.makeText(MainActivity.this, "Authentication failed.", 
           Toast.LENGTH_SHORT).show(); 
         updateUI(null); 
        } 


       } 
      }); 
} 
// [END auth_with_google] 

// [START signin] 
private void signIn() { 
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
    startActivityForResult(signInIntent, RC_SIGN_IN); 
} 
// [END signin] 

private void signOut() { 
    // Firebase sign out 
    mAuth.signOut(); 

    // Google sign out 
    Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
      new ResultCallback<Status>() { 
       @Override 
       public void onResult(@NonNull Status status) { 
        updateUI(null); 
       } 
      }); 
} 




private void updateUI(FirebaseUser user) { 

    if (user != null) { 

     findViewById(R.id.buttonGoChat).setVisibility(View.VISIBLE); 
     findViewById(R.id.sign_in_button).setVisibility(View.GONE); 
     findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE); 
    } else { 


     findViewById(R.id.buttonGoChat).setVisibility(View.GONE); 
     findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE); 
     findViewById(R.id.sign_out_button).setVisibility(View.GONE); 
    } 
} 

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
    // An unresolvable error has occurred and Google APIs (including Sign-In) will not 
    // be available. 
    Log.d(TAG, "onConnectionFailed:" + connectionResult); 
    Toast.makeText(this, "Google Play Services error.", Toast.LENGTH_SHORT).show(); 
} 

@Override 
public void onClick(View v) { 
    Intent go = new Intent(); 
    int i = v.getId(); 
    if (i == R.id.sign_in_button) { 
     signIn(); 
    } else if (i == R.id.sign_out_button) { 
     signOut(); 
    } else if (i == R.id.buttonGoChat){ 
     go.setClass(getApplicationContext(),ChatActivity.class); 
     startActivity(go); 
    } 
} 

}

+0

Aber in meinem Code habe ich keine Zeile in Firebase anmelden. Ich habe mich in Firebase eingeloggt, indem ich einige Optionen im Android Studio angeklickt habe. – Agnes

+0

Ich entschuldige mich, aber ich glaube nicht, dass ich die Frage verstehe. Versuchen Sie Firebase zu verwenden, um sich mit Google oder Facebook für Ihre App anzumelden? Was meinen Sie mit "Klicken Sie auf einige Menüoptionen in Android Studio?" –

Verwandte Themen