2016-12-12 4 views
2

Ich habe Probleme bei der Integration meiner App mit Google-Anmeldung. Es scheint nur, dass das Ergebnis handleSignInResult (GoogleSignInResult Ergebnis) ist falsch (und sollte wahr sein).

Kann jemand helfen und erklären, warum das passiert? Ich kann nicht herausfinden, was passieren kann, dass es scheitern wird (mit und ohne das enthaltene Token scheitert es immer noch).Google Anmelden in Android-App funktioniert nicht

public class GoogleSignIn extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener{ 

//Pass this client ID to the requestIdToken or requestServerAuthCode method when you create the GoogleSignInOptions object. 

private final int RC_SIGN_IN = 9001; 
private final String TOKEN_CRED_ID = "*******-the web application credentials copied from https://console.developers.google.com/apis/credentials"; 
private GoogleApiClient mGoogleApiClient; 
private SignInButton SignInBtn; 
private TextView SignInStatusView; 



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

    SignInBtn = (SignInButton) findViewById(R.id.sign_in_button); 
    SetButtons(); 
    SignInStatusView = (TextView) findViewById(R.id.google_sign_in_status); 
    // Get the user's ID and basic profile info using google 

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestEmail() 
      .requestIdToken(TOKEN_CRED_ID) 
      .build(); 


    // This object is used in order to access the Google API for Signing in 

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


    SignInBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      signIn(); 
     } 
    }); 

    final Button SignOutBtn = (Button) findViewById(R.id.sign_out_and_disconnect); 
    SignOutBtn.setVisibility(View.GONE); 
    SignOutBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      signOut(); 
     } 
    }); 


} 

private void CustomizeSignInButton() 
{ 
    SignInBtn = (SignInButton) findViewById(R.id.sign_in_button); 
    SignInBtn.setSize(SignInButton.SIZE_STANDARD); 
} 

private void SetButtons() 
{ 
    CustomizeSignInButton(); 

    Button back = (Button) findViewById(R.id.go_back); 
    back.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      GoogleSignIn.this.finish(); 
     } 
    }); 


} 


protected void onStart() { 
    super.onStart(); 
    mGoogleApiClient.connect(); 
} 



protected void onStop() { 
    super.onStop(); 
    if (mGoogleApiClient.isConnected()) { 
     mGoogleApiClient.disconnect(); 
    } 
} 

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

private void signOut() { 
    Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
      new ResultCallback<Status>() { 
       @Override 
       public void onResult(Status status) { 
        // [START_EXCLUDE] 
        updateUI(false); 
        // [END_EXCLUDE] 
       } 
      }); 
} 



@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    System.out.println("\n\n\n\nRequest code: " + requestCode); 
    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); 
    if (requestCode == RC_SIGN_IN) { 
     if (resultCode == RESULT_OK) 
     { 
      System.out.println("OK RESULT"); 
     } 
     else 
     { 
      System.out.println("NOT OK RESULT"); 
     } 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     handleSignInResult(result); 
    } 
} 


private void handleSignInResult(GoogleSignInResult result) { 
    System.out.println("handleSignInResult:" + result.isSuccess()); 
    if (result.isSuccess()) { 
     // Signed in successfully, show authenticated UI. 
     GoogleSignInAccount acct = result.getSignInAccount(); 
     SignInStatusView.setText(getString(R.string.signed_in, acct.getDisplayName())); 
     updateUI(true); 
     SaveClientDetails(acct); 
    } else { 
     // Signed out, show unauthenticated UI. 
     updateUI(false); 
    } 
} 


private void updateUI(boolean signedIn) { 
    if (signedIn) { 
     findViewById(R.id.sign_in_button).setVisibility(View.GONE); 
     findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE); 
    } else { 
     SignInStatusView.setText(R.string.signed_out); 
     findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE); 
     findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE); 
    } 
} 


private void SaveClientDetails(GoogleSignInAccount account) 
{ 
    // Save to DB 
    System.out.println("*\nIn SAVE\n*"); 
} 

@Override 
public void onConnectionFailed(ConnectionResult connectionResult) { 
    // Connection failed completely. Sign in and other functions are not available. 
    System.out.println("ERROR ::: Problems with connection"); 
} 

}

+0

laufen herunterladen tat Sie wenden SHA-1 Schlüssel für debugg an – siva35

+0

wie mache ich das? –

Antwort

1

1. Get SHA1 Key Link

2. den Paketnamen und SHA1-Fingerabdruck Einfügen und klicken Sie auf Aktivieren Google-Anmeldung. und klicken Sie dann auf schließlich auf Konfigurationsdatei generieren, um Ihre Google-services.json From This Link

3. Verschieben google-services.json Datei in App-Ordner Reffer Link

4. Jetzt

+1

Zuerst, vielen Dank dafür !! @ siva35 Musste zur Firebase-Konsole-> Einstellungen-> Projekteinstellungen gehen und den manuell generierten SHA-1 hinzufügen. Nur für jeden, der Firebase nutzt :) –

Verwandte Themen