2016-06-09 30 views
8

Quindi ho lavorato per un paio di giorni e non riesco a capire perché non funzioni. Spero davvero che qualcuno possa aiutarmi.GoogleSignInResult restituisce DEVELOPER_ERROR nell'app per Android utilizzando Firebase

Sto tentando di autenticare un utente con Google accedi utilizzando Firebase. Quindi, seguendo la loro guida here, ho configurato Google per accedere a un token OAuth e utilizzarlo per l'autenticazione con Firebase. Così ho configurato Google come descrivono nella loro guida here ma questo è il massimo che ho ottenuto. Il token OAuth ricevuto da Google è sempre nullo e il codice risultato è Status {statusCode = DEVELOPER_ERROR, resolution = null}.

Finora, la mia attività si presenta come segue:

public static final int RC_GOOGLE_LOGIN = 1; 
private GoogleApiClient mGoogleApiClient; 
final Context context = this; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Firebase.setAndroidContext(this); 

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

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

    SignInButton signInButton = (SignInButton) findViewById(R.id.googlebtn); 
    signInButton.setSize(SignInButton.SIZE_WIDE); 
    signInButton.setScopes(gso.getScopeArray()); 
    signInButton.setOnClickListener(this); 

} 

@Override 
public void onClick (View v) { 

    switch (v.getId()) { 
     case R.id.googlebtn: 
      signIn(); 
      break; 
    } 
} 

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

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == RC_GOOGLE_LOGIN) { 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     handleSignInResult(result); 
    } 
} 

private void handleSignInResult(GoogleSignInResult result) { 
    if (result.isSuccess()) { 
     // Signed in successfully, show authenticated UI. 
     GoogleSignInAccount acct = result.getSignInAccount(); 

     String idToken = acct.getIdToken(); 
    } 
} 

Sono stato googling questo per un po 'e credo di aver provato tutto ciò che è già suggerito. Naturalmente ho fatto tutto nelle guide, aggiunto dipendenze ('com.google.android.gms: play-services-auth: 8.4.0') e creato i client necessari nella console degli sviluppatori.

Ho anche verificato (più volte) che l'ID client del server che sto utilizzando è quello giusto dalla Console per gli sviluppatori e che corrisponde al mio nome del pacchetto sia nel file gradle che nel file Manifest. Ho aggiunto il file google-services.json alla mia directory/app e l'ho anche rigenerato per assicurarmi che corrisponda. Ho anche verificato che il tasto SHA1 sia corretto e restituisca lo stesso errore.

Se rimuovo requestIdToken dalle opzioni di accesso di Google, funziona, ma questo non mi aiuta poiché non riesco ad accedere con Firebase. Qualcuno può dirmi cosa devo fare per farlo funzionare?

+1

Ho riscontrato lo stesso problema. Hai trovato la soluzione per questo? – user3089214

+0

Di fronte lo stesso e sono davvero fuori di idee. Hai trovato una soluzione? – zuko

risposta

Problemi correlati