自8月份以来我一直没有碰过这段代码,它运行良好,但是自从昨天开始重新使用它以来,我一直遇到此错误:
W / TAG:createUserWithEmail:failure
com.google.firebase.FirebaseException:发生内部错误。 [无法解析主机“ www.googleapis.com”:没有与主机名关联的地址]
我的所有依赖项均已正确设置。我检查了无数次,还花了数小时在YouTube上,重新下载了json文件,更新了Android Studio和我的模拟器。这是我的不得已。我希望有人能帮帮忙。这是我的代码
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Log.d(TAG, "createUserWithEmail:success");
FirebaseUser user = mAuth.getCurrentUser();
Toast.makeText(Register.this, "Sign up success! Taking you to login...",
Toast.LENGTH_SHORT).show();
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, "createUserWithEmail:failure", task.getException());
Toast.makeText(Register.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(TAG, e.getMessage());
Log.d(TAG, "FAIL");
}
});
答案 0 :(得分:0)
我上次使用Firebase身份验证时,使用以下代码:
AuthUI.IdpConfig googleIdp = new AuthUI.IdpConfig.EmailBuilder()
.build();
startActivityForResult(AuthUI.getInstance()
.createSignInIntentBuilder()
.setIsSmartLockEnabled(false)
.setTosAndPrivacyPolicyUrls("Política de privacidad", "http://twitter.com")
.setAvailableProviders(Arrays.asList(new AuthUI.IdpConfig.EmailBuilder().build(),
facebookIdp, googleIdp))
.setTheme(R.style.GreenTheme)
.setLogo(R.drawable.img_multi_login)
.build(), RC_SIGN_IN);
结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
if (resultCode == RESULT_OK) {
Toast.makeText(this, "Welcome", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show();
}
}
}
并使用AuthStateListener更改用户的数据(如果发生了更改或是否已登录用户)。
我认为这是在Android上实现Firebase身份验证的最简单方法。