2016-06-14 7 views
16

Подписание в через Google в моем приложении дает эту ошибку:Firebase Android: произошла внутренняя ошибка. [OPERATION_NOT_ALLOWED]

An internal error has occurred. [ OPERATION_NOT_ALLOWED ]

Я позволил Google в Firebase консоли. Разрешения верны, и я не могу найти проблему. Я уверен, что это не имеет никакого отношения к моему коду, но если это мне скажет.

SignInactivity:

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.sign_in_button: 
      signIn(); 
      break; 
    } 
} 

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

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
    // An unresolvable error has occurred and Google APIs (including Sign-In) will not 
    // be available. 
    Log.d(TAG, "onConnectionFailed:" + connectionResult); 
    Toast.makeText(this, "Google Play Services error.", Toast.LENGTH_SHORT).show(); 
} 

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

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); 
    if (requestCode == RC_SIGN_IN) { 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     if (result.isSuccess()) { 
      // Google Sign In was successful, authenticate with Firebase 
      GoogleSignInAccount account = result.getSignInAccount(); 
      firebaseAuthWithGoogle(account); 
     } else { 
      // Google Sign In failed 
      Log.e(TAG, "Google Sign In failed."); 
     } 
    } 
} 

private void firebaseAuthWithGoogle(GoogleSignInAccount acct) { 
    Log.d(TAG, "firebaseAuthWithGooogle:" + acct.getId()); 
    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null); 
    mFirebaseAuth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 

     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 
      Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful()); 

      // If sign in fails, display a message to the user. If sign in succeeds 
      // the auth state listener will be notified and logic to handle the 
      // signed in user can be handled in the listener. 
      if (!task.isSuccessful()) { 
       Log.w(TAG, "signInWithCredential", task.getException()); 
       Toast.makeText(SignInActivity.this, "Authentication failed: " + task.getException(), 
         Toast.LENGTH_SHORT).show(); 
      } else { 
       startActivity(new Intent(SignInActivity.this, MainActivity.class)); 
       finish(); 
      } 
     } 
    ); 
} 
+0

показать код? –

+1

@ jesses.co.tt код не требуется, но я добавлю SignInActivity –

+0

Это, очевидно, ошибка _server_, ничего больше. –

ответ

33

У меня была такая же проблема. Я получил решение на форуме [Google Auth] com.google.firebase.FirebaseException: An internal error has occurred.

Это случилось со мной, когда у меня не было способа аутентификации, включенного в консоли Firebase. Когда я включил аутентификацию Google, я получил то же исключение, просто без [OPERATION_NOT_ALLOWED].

+0

Хотя я дважды проверял, это решение было подходящим для меня. Хотя я и делал это раньше. Я предполагаю, что вы скопировали и ввели это сообщение из групп google? –

+0

hehehe да я обновляю источник. –

+0

Взял меня, чтобы увидеть это :) – Lancelot

11
  1. Перейти к https://console.firebase.google.com/
  2. Выберите проект.
  3. Нажмите на Authentication из пункта меню
  4. Нажмите на SIGN-IN-МЕТОД
  5. Нажмите на Google и включить его.

Чем это работает отлично :)

+1

Можете ли вы не увидеть ответ, который был принят? –

+2

Работал для меня .. Спасибо за ответ –

+0

Obrigado cara! como que esqueceram de colocar isso na documentação? Se colocaram, ficou muito oculto. Спасибо, человек! Почему они забыли положить это в документацию? Если они это сделали, это было очень скрыто. –

0

Включить метод SIGN-IN-метод на firebase console который вы собираетесь использовать, или вы используете в вашем приложении.

0

Если вы зарегистрировались с электронной почтой и паролем, выполните следующие шаги.

Go to https://console.firebase.google.com/ 
Select your project. 
Click on Authentication from menu option(Right-side menu) 
Click on SIGN-IN-METHOD 
Click on Email/Password and enable it. 
Click on SAVE. 
0

Наконец-то я нашел решение, которое сработало для меня. Дело в том, что даже если вы успешно настроили метод электронной почты + пароль, вам нужно создать мобильное приложение (в моем случае) и связать его с вашим проектом. После этого FireBase будет работать так, как ожидалось.

Смежные вопросы