0

によってログインが皆、 Aを歓迎するときfirebaseは動作しませんが、私はfirebaseを使用 、アンドロイドスタジオでアプリケーションを持っていますが、とき(Facebookやグーグル)でログインするAuthUIにより、ユーザのログイン アンドロイド - AuthUI - Facebookの

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

とユーザの成功のログインはその後 firebaseは動作しません。 ユーザーのログアウト、

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

がfirebaseは、私は私のGoogleのサインインとアウトのためにこれを使用し、通常

+0

を実装して拡張知らせ? –

+0

ユーザーがfacebookまたはgoogleでログインしている間 – Agnes

答えて

0

を作業を開始。よく働く!もちろん、あなたのリソースに適応する必要があります。これで問題が解決しない場合は、ライブラリの依存関係に問題がある可能性があります。私は

パブリッククラスMainActivityがfirebase動作しない場合AppCompatActivityが 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

私のコードでは、firebaseにログインする行はありません。私はアンドロイドスタジオのメニューのいくつかのオプションをクリックしてfirebaseにログインしました。 – Agnes

+0

私は謝罪するが、私はその質問を理解しているとは思わない。あなたのアプリのためにGoogleやFacebookにログインするためfirebaseを使用しようとしていますか?アンドロイドスタジオのメニューのいくつかのオプションをクリックするとどういう意味ですか? –

関連する問題