2016-11-14 56 views
0

我做了一個腳本,通過谷歌登錄,然後會從谷歌的登錄用戶名,並將其傳遞到下一個活動。谷歌火力地堡登錄不工作

的問題是,我想作一個Facebook登錄按鈕,試圖將其添加到我的劇本,但沒有奏效。現在我試圖扭轉我爲使Facebook登錄按鈕正常工作所做的一切,但現在我的谷歌登錄也失敗了。

我一直在測試,現在嘗試它超過4個小時,我無法找到答案。

現在我已經完成的工作,是在哪裏出了問題的測試。 這個問題的答案是; onActivityResult 我做得到 「firebaseauthwithgoogle:+ acct.getId」 在我的日誌。 但我沒有得到「mAuth.signInWithCredential(憑證).addOnCompleteListener」

的迴應它不會執行「onComplete」方法。我真的不想得到它。 請幫我得到它的工作:)

這是我的腳本:

mAuth = FirebaseAuth.getInstance(); 
    mAuthListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if (user != null) { 
       // User is signed in 
       Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid()); 
      } else { 
       // User is signed out 
       Log.d(TAG, "onAuthStateChanged:signed_out"); 
      } 
      // ... 
     } 
    }; 

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestIdToken(getString(R.string.default_web_client_id)) 
      .requestEmail() 
      .build(); 

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

    /*mGoogleBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      signIn(); 

     } 
    });*/ 
    findViewById(R.id.sign_in_button).setOnClickListener(this); 

} 


@Override 
protected void onStart() { 
    super.onStart(); 
    mAuth.addAuthStateListener(mAuthListener); 


} 

@Override 
protected void onStop() { 
    super.onStop(); 
    if(mAuthListener != null) 
     mAuth.removeAuthStateListener(mAuthListener); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    AppEventsLogger.deactivateApp(this); 
} 

@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()) { 
      System.out.println("ALEX: Result is Succes"); 
      // Google Sign In was successful, authenticate with Firebase 
      GoogleSignInAccount account = result.getSignInAccount(); 
      firebaseAuthWithGoogle(account); 
     } else { 
      System.out.println("ALEX: RESULT IS FAILED!!"); 
      // Google Sign In failed, update UI appropriately 
      // ... 
     } 
    } 
} 

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) { 
        Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful()); 
        System.out.println("Current user : " + mAuth.getCurrentUser()); 
        // If sign in fails, display a message to the user. If sign in succeeds 
        // the auth state listener will be notified and logic to handle the 
        // signed in user can be handled in the listener. 
        if (!task.isSuccessful()) { 
         Log.w(TAG, "signInWithCredential", task.getException()); 
         Toast.makeText(MainActivity.this, "Authentication failed.", 
           Toast.LENGTH_SHORT).show(); 
        } 
        // ... 
       } 


      }); 
} 



private void logIn() { 


    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
    Intent myIntent = new Intent(MainActivity.this, LoggedInIndex.class); 


    if (user != null) { 
     myIntent.putExtra("uid", user.getDisplayName()); 
     myIntent.putExtra("email", user.getEmail()); 
     myIntent.putExtra("pic", user.getPhotoUrl().toString()); 
    } else { 
     myIntent.putExtra("uid", "failed"); 
     myIntent.putExtra("email", "failed"); 
    } 


    startActivity(myIntent); 

} 
private void signIn(){ 
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
    startActivityForResult(signInIntent, RC_SIGN_IN); 


} 

public static void signOut(){ 
    FirebaseAuth.getInstance().signOut(); 
} 

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
    Log.d(TAG, "Connection failed."); 
} 



@Override 
public void onClick(View view) { 
    switch(view.getId()){ 
     case R.id.sign_in_button: 
      signIn(); 

      break; 
    } 
} 

回答

0

我得到它的工作,

這是這是造成麻煩的模擬器。 迄今牛軋糖不是我的成功。回到6.0