Итак, я уже пару дней общался с этим, и я не могу понять, почему он не работает. Я действительно надеюсь, что кто-то может мне помочь.GoogleSignInResult возвращает DEVELOPER_ERROR в Android-приложении, используя Firebase
Я пытаюсь аутентифицировать пользователя с помощью Google с использованием Firebase. Итак, следуя их руководству here Я установил вход в Google, чтобы получить токен OAuth, а затем использовать его для аутентификации с помощью Firebase. Поэтому я создал Google, как они описывают в своем руководстве here, но это насколько я понял. Ток OAuth, который я получаю от Google, всегда является нулевым, а в результате - Status {statusCode = DEVELOPER_ERROR, resolution = null}.
До сих пор моя деятельность выглядит следующим образом:
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();
}
}
Я прибегая к помощи этого на некоторое время, и думаю, что я попробовал все, что уже предложили. Конечно, я сделал все в руководствах, добавил зависимости («com.google.android.gms: play-services-auth: 8.4.0») и создал необходимых клиентов в консоли разработчика.
Я также проверил (несколько раз), что идентификатор клиента сервера, который я использую, является правильным с консоли разработчика и соответствует имени моего пакета как в моем файле gradle, так и в файле манифеста. Я добавил файл google-services.json в каталог my/app и даже обновил его, чтобы убедиться, что он соответствует. Я также проверил, что ключ SHA1 правильный, и он по-прежнему дает ту же ошибку.
Если я удалю requestIdToken из параметров входа в Google, он работает, но это не помогает мне, поскольку я не могу войти в систему с Firebase. Может ли кто-нибудь сказать мне, что мне нужно сделать, чтобы он работал?
Я столкнулся с таким же вопросом. Вы нашли решение для этого? – user3089214
Столкнувшись с тем же, и у меня действительно нет идей. Вы нашли решение? – zuko