. 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?
Mam do czynienia z tym samym problemem. Czy znalazłeś na to rozwiązanie? – user3089214
Wobec tego samego i naprawdę nie mam pomysłów. Znalazłeś rozwiązanie? – zuko