2016-06-09 13 views
8

So habe ich jetzt schon seit ein paar Tagen damit zu tun und ich kann nicht herausfinden, warum es nicht funktioniert. Ich hoffe wirklich, dass mir jemand helfen kann.GoogleSignInResult gibt DEVELOPER_ERROR in der Android-App mit Firebase zurück

Ich versuche, einen Benutzer mit Google-Anmeldung mit Firebase zu authentifizieren. Nachdem ich ihren Guide here verfolgt habe, habe ich Google angemeldet, um ein OAuth-Token zu erhalten und dieses dann zur Authentifizierung mit Firebase zu verwenden. Also habe ich Google so eingerichtet, wie sie in ihrem Guide beschreiben here, aber das ist soweit ich gekommen bin. Das OAuth-Token, das ich von Google erhalte, ist immer null und der Ergebniscode lautet Status {statusCode = DEVELOPER_ERROR, resolution = null}.

Bisher sieht meine Tätigkeit wie folgt aus:

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

Ich habe eine Zeit lang das schon googeln und glaube, ich habe alles versucht, die bereits vorgeschlagen. Natürlich habe ich alles in den Guides gemacht, Abhängigkeiten hinzugefügt ('com.google.android.gms: play-services-auth: 8.4.0') und die notwendigen Clients in der Entwicklerkonsole erstellt.

Ich habe auch (mehrfach) überprüft, dass die Server-Client-ID, die ich verwende, die richtige von der Entwicklerkonsole ist und dass sie mit meinem Paketnamen sowohl in meiner Standarddatei als auch in der Manifestdatei übereinstimmt. Ich habe die Datei google-services.json zum Verzeichnis/app hinzugefügt und sie sogar neu generiert, um sicherzustellen, dass sie übereinstimmt. Ich habe auch überprüft, dass der SHA1-Schlüssel korrekt ist und es immer noch den gleichen Fehler gibt.

Wenn ich das RequestIdToken aus den Google-Anmeldeoptionen entferne, funktioniert es zwar, aber das hilft mir nicht, da ich mich dann nicht bei Firebase anmelden kann. Kann mir jemand sagen, was ich tun muss, damit es funktioniert?

+1

Ich bin mit dem gleichen Problem konfrontiert. Hast du eine Lösung dafür gefunden? – user3089214

+0

Angesichts der gleichen und ich habe wirklich keine Ideen. Hast du eine Lösung gefunden? – zuko

Antwort