📜  如何在Android中通过电子邮件验证添加用户注册?

📅  最后修改于: 2021-05-08 20:44:26             🧑  作者: Mango

我们已经看到大多数应用程序通过向用户发送验证链接或向用户的手机号码发送OTP来通过用户的电子邮件地址或电话号码验证其用户。在本文中,我们将通过电子邮件验证来查看Android中用户注册的实现。为此,我们将使用Back4App服务,该服务向我们提供了一项功能,以便我们可以将自动电子邮件验证链接发送给我们的用户以进行验证。

我们将在本文中构建什么?

我们将构建一个简单的应用程序,其中将显示一个简单的用户注册和登录表单。用户注册后,我们将向用户的电子邮件地址发送验证链接,以验证用户的电子邮件地址。下面是视频,我们将在其中观看我们将要构建的内容。

分步实施

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。

步骤2:将您的应用程序连接到Back4App

请参阅如何将Android App与Back4App连接 为此任务。

步骤3:使用activity_main.xml文件

导航到应用程序> res>布局> activity_main.xml,然后将以下代码添加到该文件中。以下是activity_main.xml文件的代码。

XML


  
    
    
  
    
    
  
    
    
      
    
    
  
    
    


Java
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
  
import androidx.appcompat.app.AppCompatActivity;
  
import com.parse.ParseException;
import com.parse.ParseUser;
import com.parse.SignUpCallback;
  
public class MainActivity extends AppCompatActivity {
      
    // creating variables for our edit text and buttons.
    private EditText userNameEdt, passwordEdt, userEmailEdt;
    private Button registerBtn;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        // initializing our edit text  and buttons.
        userNameEdt = findViewById(R.id.idEdtUserName);
        passwordEdt = findViewById(R.id.idEdtPassword);
        userEmailEdt = findViewById(R.id.idEdtEmail);
        registerBtn = findViewById(R.id.idBtnRegister);
          
        // adding on click listener for our button
        registerBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                  
                // on below line we are getting data from our edit text.
                String userName = userNameEdt.getText().toString();
                String password = passwordEdt.getText().toString();
                String email = userEmailEdt.getText().toString();
                  
                // checking if the entered text is empty or not.
                if (TextUtils.isEmpty(userName) && TextUtils.isEmpty(password) && TextUtils.isEmpty(email)) {
                    Toast.makeText(MainActivity.this, "Please enter user name and password", Toast.LENGTH_SHORT).show();
                }
                  
                // calling a method to register a user.
                registerUser(userName, password, email);
            }
        });
    }
  
    private void registerUser(String userName, String password, String email) {
          
        // on below line we are creating 
        // a new user using parse user.
        ParseUser user = new ParseUser();
          
        // Set the user's username, user email and password, 
        // which can be obtained from edit text
        user.setUsername(userName);
        user.setEmail(email);
        user.setPassword(password);
          
        // calling a method to register the user.
        user.signUpInBackground(new SignUpCallback() {
            @Override
            public void done(ParseException e) {
                // on user registration checking 
                // if the error is null or not.
                if (e == null) {
                    // if the error is null we are displaying a toast message and 
                    // redirecting our user to login activity and passing the user name.
                    Toast.makeText(MainActivity.this, "User Registered successfully \n Please verify your email", Toast.LENGTH_SHORT).show();
                    Intent i = new Intent(MainActivity.this, LoginActivity.class);
                    i.putExtra("usereName", userName);
                    i.putExtra("password", password);
                    startActivity(i);
                } else {
                    // if we get any error then we are logging out 
                    // our user and displaying an error message
                    ParseUser.logOut();
                    Toast.makeText(MainActivity.this, "Fail to Register User..", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}


XML


  
    
    
  
    
    
  
    
    
  
    
    


Java
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
  
import androidx.appcompat.app.AppCompatActivity;
  
import com.parse.ParseUser;
  
public class LoginActivity extends AppCompatActivity {
      
    // creating variables for our edit text and buttons.
    private EditText userNameEdt, passwordEdt;
    private Button loginBtn;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
          
        // initializing our edit text  and buttons.
        userNameEdt = findViewById(R.id.idEdtUserName);
        passwordEdt = findViewById(R.id.idEdtPassword);
        loginBtn = findViewById(R.id.idBtnLogin);
        userNameEdt.setText(getIntent().getStringExtra("usereName"));
        passwordEdt.setText(getIntent().getStringExtra("password"));
          
        // adding on click listener for our button.
        loginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                  
                // on below line we are getting data from our edit text.
                String userName = userNameEdt.getText().toString();
                String password = passwordEdt.getText().toString();
                  
                // checking if the entered text is empty or not.
                if (TextUtils.isEmpty(userName) && TextUtils.isEmpty(password)) {
                    Toast.makeText(LoginActivity.this, "Please enter user name and password", Toast.LENGTH_SHORT).show();
                }
                  
                // calling a method to login our user.
                loginUser(userName, password);
            }
        });
    }
  
    private void loginUser(String userName, String password) {
        // calling a method to login a user.
        ParseUser.logInInBackground(userName, password, (parseUser, e) -> {
            // after login checking if the user is null or not.
            if (parseUser != null) {
                // if the user is not null then we will display a toast message
                // with user login and passing that user to new activity.
                Toast.makeText(this, "Login Successful ", Toast.LENGTH_SHORT).show();
                Intent i = new Intent(LoginActivity.this, HomeActivity.class);
                i.putExtra("username", userName);
                startActivity(i);
            } else {
                // display an toast message when user logout of the app.
                ParseUser.logOut();
                Toast.makeText(LoginActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
            }
        });
    }
}


XML


      
    
    
      
    
    
      


Java
import android.os.Bundle;
import android.widget.TextView;
  
import androidx.appcompat.app.AppCompatActivity;
  
public class HomeActivity extends AppCompatActivity {
  
    // creating a variable for our text view..
    private TextView userNameTV;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
  
        // initializing our variables
        userNameTV = findViewById(R.id.idTVUserName);
          
        // getting data from intent.
        String name = getIntent().getStringExtra("username");
          
        // setting data to our text view.
        userNameTV.setText(name);
    }
}


步骤4:使用MainActivity。 Java文件

转到MainActivity。 Java文件并参考以下代码。下面是MainActivity的代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。

Java

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
  
import androidx.appcompat.app.AppCompatActivity;
  
import com.parse.ParseException;
import com.parse.ParseUser;
import com.parse.SignUpCallback;
  
public class MainActivity extends AppCompatActivity {
      
    // creating variables for our edit text and buttons.
    private EditText userNameEdt, passwordEdt, userEmailEdt;
    private Button registerBtn;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        // initializing our edit text  and buttons.
        userNameEdt = findViewById(R.id.idEdtUserName);
        passwordEdt = findViewById(R.id.idEdtPassword);
        userEmailEdt = findViewById(R.id.idEdtEmail);
        registerBtn = findViewById(R.id.idBtnRegister);
          
        // adding on click listener for our button
        registerBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                  
                // on below line we are getting data from our edit text.
                String userName = userNameEdt.getText().toString();
                String password = passwordEdt.getText().toString();
                String email = userEmailEdt.getText().toString();
                  
                // checking if the entered text is empty or not.
                if (TextUtils.isEmpty(userName) && TextUtils.isEmpty(password) && TextUtils.isEmpty(email)) {
                    Toast.makeText(MainActivity.this, "Please enter user name and password", Toast.LENGTH_SHORT).show();
                }
                  
                // calling a method to register a user.
                registerUser(userName, password, email);
            }
        });
    }
  
    private void registerUser(String userName, String password, String email) {
          
        // on below line we are creating 
        // a new user using parse user.
        ParseUser user = new ParseUser();
          
        // Set the user's username, user email and password, 
        // which can be obtained from edit text
        user.setUsername(userName);
        user.setEmail(email);
        user.setPassword(password);
          
        // calling a method to register the user.
        user.signUpInBackground(new SignUpCallback() {
            @Override
            public void done(ParseException e) {
                // on user registration checking 
                // if the error is null or not.
                if (e == null) {
                    // if the error is null we are displaying a toast message and 
                    // redirecting our user to login activity and passing the user name.
                    Toast.makeText(MainActivity.this, "User Registered successfully \n Please verify your email", Toast.LENGTH_SHORT).show();
                    Intent i = new Intent(MainActivity.this, LoginActivity.class);
                    i.putExtra("usereName", userName);
                    i.putExtra("password", password);
                    startActivity(i);
                } else {
                    // if we get any error then we are logging out 
                    // our user and displaying an error message
                    ParseUser.logOut();
                    Toast.makeText(MainActivity.this, "Fail to Register User..", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

步骤5:为登录我们的应用程序创建一个新活动

导航到应用程序> Java >您的应用程序包名称>右键单击它>新建>活动>空活动,然后将您的活动命名为LoginActivity

步骤6:使用activity_login.xml文件

导航至应用程序> res>布局> activity_login.xml,然后将以下代码添加到该文件中。以下是activity_login.xml文件的代码。

XML格式



  
    
    
  
    
    
  
    
    
  
    
    

步骤7:使用LoginActivity。 Java文件

转到LoginActivity。 Java文件并参考以下代码。下面是LoginActivity的代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。

Java

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
  
import androidx.appcompat.app.AppCompatActivity;
  
import com.parse.ParseUser;
  
public class LoginActivity extends AppCompatActivity {
      
    // creating variables for our edit text and buttons.
    private EditText userNameEdt, passwordEdt;
    private Button loginBtn;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
          
        // initializing our edit text  and buttons.
        userNameEdt = findViewById(R.id.idEdtUserName);
        passwordEdt = findViewById(R.id.idEdtPassword);
        loginBtn = findViewById(R.id.idBtnLogin);
        userNameEdt.setText(getIntent().getStringExtra("usereName"));
        passwordEdt.setText(getIntent().getStringExtra("password"));
          
        // adding on click listener for our button.
        loginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                  
                // on below line we are getting data from our edit text.
                String userName = userNameEdt.getText().toString();
                String password = passwordEdt.getText().toString();
                  
                // checking if the entered text is empty or not.
                if (TextUtils.isEmpty(userName) && TextUtils.isEmpty(password)) {
                    Toast.makeText(LoginActivity.this, "Please enter user name and password", Toast.LENGTH_SHORT).show();
                }
                  
                // calling a method to login our user.
                loginUser(userName, password);
            }
        });
    }
  
    private void loginUser(String userName, String password) {
        // calling a method to login a user.
        ParseUser.logInInBackground(userName, password, (parseUser, e) -> {
            // after login checking if the user is null or not.
            if (parseUser != null) {
                // if the user is not null then we will display a toast message
                // with user login and passing that user to new activity.
                Toast.makeText(this, "Login Successful ", Toast.LENGTH_SHORT).show();
                Intent i = new Intent(LoginActivity.this, HomeActivity.class);
                i.putExtra("username", userName);
                startActivity(i);
            } else {
                // display an toast message when user logout of the app.
                ParseUser.logOut();
                Toast.makeText(LoginActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
            }
        });
    }
}

步骤8:创建一个新的活动以显示主屏幕

用户登录后,我们会将用户重定向到应用程序的主页。因此,我们将创建一个新的活动。导航到应用程序> Java >应用程序的程序包名称>右键单击它>新建>活动>空活动,然后将活动命名为HomeActivity

步骤9:使用activity_home.xml文件

导航到应用程序> res>布局> activity_home.xml,然后将以下代码添加到该文件中。以下是activity_home.xml文件的代码。

XML格式



      
    
    
      
    
    
      

步骤10:使用HomeActivity。 Java文件

转到HomeActivity。 Java文件并参考以下代码。下面是HomeActivity的代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。

Java

import android.os.Bundle;
import android.widget.TextView;
  
import androidx.appcompat.app.AppCompatActivity;
  
public class HomeActivity extends AppCompatActivity {
  
    // creating a variable for our text view..
    private TextView userNameTV;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
  
        // initializing our variables
        userNameTV = findViewById(R.id.idTVUserName);
          
        // getting data from intent.
        String name = getIntent().getStringExtra("username");
          
        // setting data to our text view.
        userNameTV.setText(name);
    }
}

现在,我们已经完成了应用程序上的工作,现在我们将朝着在Back4App控制台中进行电子邮件验证的方向迈进。

步骤11:添加电子邮件模板,您会将其发送给用户以进行电子邮件验证

在Back4App控制台中导航到应用程序的仪表板。在此控制台内。导航到左侧导航抽屉中和屏幕内的“服务器设置”选项。单击验证电子邮件部分中的设置选项。您可以看到以下屏幕截图。

转到此选项后,您可以看到电子邮件模板。您可以根据需要添加或编辑此电子邮件模板。更新电子邮件模板之后。确保保存您的电子邮件模板。

更新电子邮件模板后,保存您的电子邮件模板,然后运行您的应用程序。您可以在下面的屏幕上查看输出。

输出:

在以下链接上查看项目: https : //github.com/ChaitanyaMunje/GFG-Back4App/tree/EmailVerification