我有一个使用基于电子邮件的身份验证访问Firebase数据库和存储的应用。是否可以为使用我的应用程序的所有用户使用单个电子邮件ID /密码?电子邮件ID和密码在下面显示的方法中进行编码,该方法是从onCreate调用的。使用一个设备进行测试时,此工作正常。我在不同的API版本上尝试使用不同的Android设备时,虽然不一致但我看到了身份验证问题。我只想排除使用单个电子邮件ID / passwd从不同设备访问应用程序/数据库有任何限制吗?
mAuth.signInWithEmailAndPassword("email ID", "password")
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
System.out.println("AUTH signInWithEmail:onComplete:" + task.isSuccessful());
if (!task.isSuccessful()) {
System.out.println("AUTH signInWithEmail:failed" + task.getException());
}
}
});
答案 0 :(得分:2)
而不是硬编码用户ID /密码。我建议您使用 Firebase匿名帐户。将来,当您添加对Gmail,Facebook,Twitter等其他Auth提供商的支持时。等等;您可以将他们的匿名帐户与登录凭据相关联。
将匿名帐户转换为永久帐户非常容易
请参阅以下有关匿名帐户的更多详情,
https://firebase.google.com/docs/auth/android/anonymous-auth
您可以使用Firebase身份验证来创建和使用临时身份验证 要使用Firebase进行身份验证的匿名帐户。这些暂时的 匿名帐户可用于允许尚未签名的用户 由您的应用程序来处理受安全规则保护的数据。如果 匿名用户决定注册您的应用,您可以链接他们的 登录匿名帐户的凭据,以便他们可以继续 在未来的会议中使用受保护的数据。
mAuth.signInAnonymously()
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "signInAnonymously: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, "signInAnonymously", task.getException());
Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
// ...
}
});
希望有所帮助!