java - 使用 3 个 identfires 登录到 Firebase(用户 ID 编号 + 电子邮件 + 密码)
问题描述
我正在为我的工作公司构建一个项目,我希望它是私人登录,因此只有属于我们公司并具有唯一工作标识符号的员工才能登录和登录。
我昨天添加了这个问题,但现在我正在创建更清晰的问题并添加我的代码,因为我无法编辑前一个问题。
这个想法是做一个firebase检查用户是否有一个有效的ID和电子邮件和密码,如果ID号不是我们公司的ID号之一,即使电子邮件和密码是正确的,也会拒绝登录。
我需要它是私人的,这取决于我们的工作号码,通常是 6 位数。问候。
这是一些代码
我昨天发布了同样的问题,彼得(彼得哈达德)试图帮助我(感谢他),现在我发布了一个更好的版本。
注册.java
package com.example.boc;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.blogspot.atifsoftwares.animatoolib.Animatoo;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.util.Date;
public class Register extends AppCompatActivity implements View.OnClickListener{
EditText name,email,password;
Button mRegisterbtn;
TextView mLoginPageBack;
FirebaseAuth mAuth;
DatabaseReference mdatabase;
String named,emailed,passworded;
ProgressDialog mDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
name = (EditText)findViewById(R.id.editName);
email = (EditText)findViewById(R.id.editEmail);
password = (EditText)findViewById(R.id.editPassword);
mRegisterbtn = (Button)findViewById(R.id.buttonRegister);
mLoginPageBack = (TextView)findViewById(R.id.buttonLogin);
// for authentication using FirebaseAuth.
mAuth = FirebaseAuth.getInstance();
mRegisterbtn.setOnClickListener(this);
mLoginPageBack.setOnClickListener(this);
mDialog = new ProgressDialog(this);
mdatabase = FirebaseDatabase.getInstance().getReference().child("Users");
}
@Override
public void onClick(View v) {
if (v==mRegisterbtn){
UserRegister();
}else if (v== mLoginPageBack){
startActivity(new Intent(Register.this,login.class));
}
}
private void UserRegister() {
named = name.getText().toString().trim();
emailed = email.getText().toString().trim();
passworded = password.getText().toString().trim();
if (TextUtils.isEmpty(named)){
Toast.makeText(Register.this, "Enter Name", Toast.LENGTH_SHORT).show();
return;
}else if (TextUtils.isEmpty(emailed)){
Toast.makeText(Register.this, "Enter Email", Toast.LENGTH_SHORT).show();
return;
}else if (TextUtils.isEmpty(passworded)){
Toast.makeText(Register.this, "Enter Password", Toast.LENGTH_SHORT).show();
return;
}else if (passworded.length()<6){
Toast.makeText(Register.this,"Passwor must be greater then 6 digit", Toast.LENGTH_SHORT).show();
return;
}
mDialog.setMessage("Creating User please wait...");
mDialog.setCanceledOnTouchOutside(false);
mDialog.show();
mAuth.createUserWithEmailAndPassword(emailed,passworded).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()){
sendEmailVerification();
mDialog.dismiss();
OnAuth(task.getResult().getUser());
mAuth.signOut();
}else{
Toast.makeText(Register.this,"error on creating user", Toast.LENGTH_SHORT).show();
}
}
});
}
//Email verification code using FirebaseUser object and using isSucccessful()function.
private void sendEmailVerification() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user!=null){
user.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Toast.makeText(Register.this,"Check your Email for verification", Toast.LENGTH_SHORT).show();
FirebaseAuth.getInstance().signOut();
}
}
});
}
}
private void OnAuth(FirebaseUser user) {
createAnewUser(user.getUid());
}
private void createAnewUser(String uid) {
User user = BuildNewuser();
mdatabase.child(uid).setValue(user);
}
private User BuildNewuser(){
return new User(
getDisplayName(),
getUserEmail(),
new Date().getTime()
);
}
private String getDisplayName() {
return named;
}
private String getUserEmail() {
return emailed;
}
}
我的 login.java
package com.example.boc;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.blogspot.atifsoftwares.animatoolib.Animatoo;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
public class login extends AppCompatActivity {
EditText Email, Password;
Button LogInButton, RegisterButton;
FirebaseAuth mAuth;
FirebaseAuth.AuthStateListener mAuthListner;
FirebaseUser mUser;
String email, password;
ProgressDialog dialog;
public static final String userEmail="";
public static final String TAG="LOGIN";
private Object Context;
private Button button;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LogInButton = (Button) findViewById(R.id.buttonLogin);
RegisterButton = (Button) findViewById(R.id.buttonRegister);
Email = (EditText) findViewById(R.id.editEmail);
Password = (EditText) findViewById(R.id.editPassword);
dialog = new ProgressDialog(this);
mAuth = FirebaseAuth.getInstance();
mUser = FirebaseAuth.getInstance().getCurrentUser();
mAuthListner = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
if (mUser != null) {
Intent intent = new Intent(login.this, DashboardActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
else
{
Log.d(TAG,"AuthStateChanged:Logout");
}
}
};
// LogInButton.setOnClickListener((View.OnClickListener) this);
//RegisterButton.setOnClickListener((View.OnClickListener) this);
//Adding click listener to log in button.
LogInButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Calling EditText is empty or no method.
userSign();
}
});
// Adding click listener to register button.
RegisterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Opening new user registration activity using intent on button click.
Intent intent = new Intent(login.this, Register.class);
startActivity(intent);
Animatoo.animateDiagonal(login.this );
}
});
}
@Override
protected void onStart() {
super.onStart();
//removeAuthSateListner is used in onStart function just for checking purposes,it helps in logging you out.
mAuth.removeAuthStateListener(mAuthListner);
}
@Override
protected void onStop() {
super.onStop();
if (mAuthListner != null) {
mAuth.removeAuthStateListener(mAuthListner);
}
}
@Override
public void onBackPressed() {
login.super.finish();
}
private void userSign() {
email = Email.getText().toString().trim();
password = Password.getText().toString().trim();
if (TextUtils.isEmpty(email)) {
Toast.makeText(login.this, "Enter the correct Email", Toast.LENGTH_SHORT).show();
return;
} else if (TextUtils.isEmpty(password)) {
Toast.makeText(login.this, "Enter the correct password", Toast.LENGTH_SHORT).show();
return;
}
dialog.setMessage("Loging in please wait...");
dialog.setIndeterminate(true);
dialog.show();
mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
dialog.dismiss();
Toast.makeText(login.this, "Login not successfull", Toast.LENGTH_SHORT).show();
} else {
dialog.dismiss();
checkIfEmailVerified();
}
}
});
}
//This function helps in verifying whether the email is verified or not.
private void checkIfEmailVerified(){
FirebaseUser users=FirebaseAuth.getInstance().getCurrentUser();
assert users != null;
boolean emailVerified=users.isEmailVerified();
{
Email.getText().clear();
Password.getText().clear();
Intent intent = new Intent(login.this, DashboardActivity.class);
// Sending Email to Dashboard Activity using intent.
intent.putExtra(userEmail,email);
startActivity(intent);
Animatoo.animateInAndOut(login.this);
}
}}
解决方案
推荐阅读
- c# - 从 SQL Lite DB 动态创建 ListView 行
- c - C 到 MIPS 汇编 while 循环
- android - 当安装来自 Google Play 时,Google Play Install Referrer SDK 返回“未设置”
- ruby-on-rails - `ActiveRecord::Enum` 值和 IRB 选项卡完成标识的一些方法
- reactjs - 如何正确使用 useReducer ?(反应钩子)
- google-sheets - 实时更新单元格与谷歌表格中的下一个事件
- python - 如何找到 Python 3.8.7 解释器?
- robotframework - 如何在机器人框架中创建元组列表而不将每一对转换为字符串
- angular - 新数据清除选择
- php - PHP不会将指定的变量发送到我的数据库,但是当我手动填写时会发送数据到数据库