8

. Z tego powodu od kilku dni mam z tym problem i nie mogę zrozumieć, dlaczego to nie działa. Naprawdę mam nadzieję, że ktoś może mi pomóc.GoogleSignInResult zwraca DEVELOPER_ERROR w aplikacji na Androida za pomocą Firebase

Próbuję uwierzytelnić użytkownika, logując się przy użyciu usługi Firebase. Więc zgodnie z ich instrukcją here skonfigurowałem logowanie Google, aby uzyskać token OAuth, a następnie użyć go do uwierzytelnienia w Firebase. Tak więc skonfigurowałem Google tak, jak opisują to w swoim przewodniku: here, ale tak daleko, jak to było. Token OAuth, który otrzymuję od Google, ma zawsze wartość NULL, a kod wyniku to Status {statusCode = DEVELOPER_ERROR, resolution = null}.

Dotychczas moja aktywność wygląda następująco:

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

I zostały googling to na chwilę i pomyśleć Próbowałem wszystkiego, co już jest sugerowane. Oczywiście zrobiłem wszystko w przewodniku, dodałem zależności ("com.google.android.gms: play-services-auth: 8.4.0") i utworzyłem niezbędnych klientów w konsoli programisty.

Sprawdziłem (wiele razy), czy identyfikator klienta serwera, którego używam, jest prawidłowy z konsoli programisty i że pasuje do mojej nazwy pakietu zarówno w moim pliku gradle, jak i pliku manifestu. Dodałem plik google-services.json do katalogu my/app, a nawet go zregenerowałem, aby się upewnić, że jest zgodny. Sprawdziłem również, czy klucz SHA1 jest poprawny i nadal daje ten sam błąd.

Po usunięciu requestIdToken z opcji logowania Google działa on jednak, ale to nie pomaga, ponieważ nie mogę zalogować się w Firebase. Czy ktoś może mi powiedzieć, co muszę zrobić, aby działało?

+1

Mam do czynienia z tym samym problemem. Czy znalazłeś na to rozwiązanie? – user3089214

+0

Wobec tego samego i naprawdę nie mam pomysłów. Znalazłeś rozwiązanie? – zuko

Odpowiedz

Powiązane problemy