2016-11-10 29 views
1

我在嘗試註冊模擬器和我的設備時不斷收到此錯誤。身份驗證failed.com.google.firebase.FirebaseException:發生內部錯誤。 [OPERATION_NOT_ALLOWED]

身份驗證failed.com.google.firebase.FirebaseException:發生內部錯誤。 [OPERATION_NOT_ALLOWED]

我已經在控制檯的身份驗證提供程序中啓用了電子郵件,正如在另一個問題中提出的,但我仍然遇到問題。有任何想法嗎? 我有發揮服務依存關係設定爲高於9.0.0並且兩個模擬器和我的測試設備滿足這一要求

這裏是我的SignupActivity代碼

public class SignupActivity extends AppCompatActivity { 

    private static final String TAG = "SignupActivity" ; 
    private Button btnSignUp,btnLinkToLogIn; 
    private ProgressBar progressBar; 
    private FirebaseAuth auth; 
    private EditText signupInputEmail, signupInputPassword; 
    private TextInputLayout signupInputLayoutEmail, signupInputLayoutPassword; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_signup); 
    auth = FirebaseAuth.getInstance(); 

    signupInputLayoutEmail = (TextInputLayout) findViewById(R.id.signup_input_layout_email); 
    signupInputLayoutPassword = (TextInputLayout) findViewById(R.id.signup_input_layout_password); 
    progressBar = (ProgressBar) findViewById(R.id.progressBar); 

    signupInputEmail = (EditText) findViewById(R.id.signup_input_email); 
    signupInputPassword = (EditText) findViewById(R.id.signup_input_password); 

    btnSignUp = (Button) findViewById(R.id.btn_signup); 
    btnLinkToLogIn = (Button) findViewById(R.id.btn_link_login); 


    btnSignUp.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      submitForm(); 

     } 
    }); 

    btnLinkToLogIn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent intent = new Intent(SignupActivity.this, LoginActivity.class); 
      startActivity(intent); 
     } 
    }); 
    } 

    /** 
    * Validating form 
    */ 
    private void submitForm() { 

    String email = signupInputEmail.getText().toString().trim(); 
    String password = signupInputPassword.getText().toString().trim(); 

    if(!checkEmail()) { 
     return; 
    } 
    if(!checkPassword()) { 
     return; 
    } 
    signupInputLayoutEmail.setErrorEnabled(false); 
    signupInputLayoutPassword.setErrorEnabled(false); 

    progressBar.setVisibility(View.VISIBLE); 
    //create user 
    auth.createUserWithEmailAndPassword(email, password) 
      .addOnCompleteListener(SignupActivity.this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        Log.d(TAG,"createUserWithEmail:onComplete:" + task.isSuccessful()); 
        progressBar.setVisibility(View.GONE); 

        if (!task.isSuccessful()) { 
         Log.d(TAG,"Authentication failed." + task.getException()); 

        } else { 
         startActivity(new Intent(SignupActivity.this, UserActivity.class)); 
         finish(); 
        } 
       } 
      }); 
    Toast.makeText(getApplicationContext(), "You are successfully Registered !!", Toast.LENGTH_SHORT).show(); 
    } 

    private boolean checkEmail() { 
    String email = signupInputEmail.getText().toString().trim(); 
    if (email.isEmpty() || !isEmailValid(email)) { 

     signupInputLayoutEmail.setErrorEnabled(true); 
     signupInputLayoutEmail.setError(getString(R.string.err_msg_email)); 
     signupInputEmail.setError(getString(R.string.err_msg_required)); 
     requestFocus(signupInputEmail); 
     return false; 
    } 
    signupInputLayoutEmail.setErrorEnabled(false); 
    return true; 
    } 

    private boolean checkPassword() { 

    String password = signupInputPassword.getText().toString().trim(); 
    if (password.isEmpty() || !isPasswordValid(password)) { 

     signupInputLayoutPassword.setError(getString(R.string.err_msg_password)); 
     signupInputPassword.setError(getString(R.string.err_msg_required)); 
     requestFocus(signupInputPassword); 
     return false; 
    } 
    signupInputLayoutPassword.setErrorEnabled(false); 
    return true; 
    } 

    private static boolean isEmailValid(String email) { 
    return !TextUtils.isEmpty(email) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches(); 
    } 

    private static boolean isPasswordValid(String password){ 
    return (password.length() >= 6); 
    } 

    private void requestFocus(View view) { 
    if (view.requestFocus()) { 
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
    } 
    } 

    @Override 
    protected void onResume() { 
    super.onResume(); 
    progressBar.setVisibility(View.GONE); 
    } 
} 

回答

0

請檢查是否在控制檯中啓用身份驗證方法Firebase與否。 如果您未啓用Google身份驗證,則會出現相同的例外情況,只是沒有[OPERATION_NOT_ALLOWED]。

欲瞭解更多信息,您可以在論壇上發帖https://groups.google.com/forum/#!topic/firebase-talk/JTaIlD-tNxw

檢查解決方案請檢查Firebase Auth文檔的詳細信息。

我有同樣的問題。我在上面的論壇帖子中找到了解決方案。

+0

我確實啓用了身份驗證方法,但它仍然給我[OPERATION_NOT_ALLOWED] – zeeman235

+0

檢查此鏈接http://stackoverflow.com/questions/37465624/firebase-password-reset-keep-getting-error-an-internal-error -has-occured-er –

+0

從頭開始重新編譯項目似乎已經解決了這個問題,謝謝。 – zeeman235