2016-06-14 79 views
16

通过谷歌在我的应用程序签名中给出了这样的错误:Firebase Android:发生内部错误。 [OPERATION_NOT_ALLOWED]

An internal error has occurred. [ OPERATION_NOT_ALLOWED ]

我在火力地堡控制台中启用谷歌。权限是正确的,我似乎无法找到问题。我确信这与我的代码无关,但是如果它告诉我的话。

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

虽然我仔细检查,这种解决方案适合我。虽然我曾尝试过。我猜你是复制并粘贴来自谷歌组的这条消息? –

+0

hehehe是我更新了源代码。 –

+0

花了我一会儿才看到它:) – Lancelot

11
  1. 转到https://console.firebase.google.com/
  2. 选择项目。
  3. 点击验证从菜单选项
  4. 点击SIGN-IN-方法
  5. 点击谷歌和启用它。

比它工作得很好:)

+1

你能看不到被接受的答案吗? –

+2

为我工作..谢谢你的回答 –

+0

Obrigado cara! como que esqueceram de colocar isso nadocumentação? Se colocaram,ficou muito oculto。 谢谢你!他们怎么忘记把它放在文档中?如果他们这样做,这是非常隐蔽的。 –

0

启用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将按预期工作。

相关问题