📌  相关文章
📜  使用 firebase 的 android studio 用户登录 (1)

📅  最后修改于: 2023-12-03 14:49:39.438000             🧑  作者: Mango

使用 Firebase 的 Android Studio 用户登录

Firebase 是 Google 推出的一项云服务平台,为开发人员提供了众多服务,包括实时数据库、身份认证、云存储、推送通知等等。其中,身份认证服务在 Android 应用开发中应用广泛,本文将介绍如何在 Android Studio 中使用 Firebase 实现用户登录功能。

1. 创建 Firebase 项目

首先,需要在 Firebase 控制台中创建一个项目。如果没有使用过 Firebase,需要先创建一个 Google 帐号,并在 Firebase 控制台中创建一个项目,具体操作可参考 Firebase 文档

2. 配置 Firebase

创建项目后,需要在 Android Studio 中配置 Firebase。下载并安装最新版本的 Google 服务 SDK,在 build.gradle 文件中添加以下依赖:

dependencies {
    // Firebase Authentication
    implementation 'com.google.firebase:firebase-auth:19.3.2'
}

接着,在应用级别的 build.gradle 文件底部添加以下代码:

apply plugin: 'com.google.gms.google-services'

在 AndroidManifest.xml 文件中添加以下代码段,其中 google_app_id 和 google_api_key 可以在 Firebase 控制台首页面中找到:

<meta-data
    android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@drawable/ic_stat_ic_notification" />
<meta-data
    android:name="com.google.firebase.messaging.default_notification_color"
    android:resource="@color/colorAccent" />

<!-- Google API Key -->
<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="YOUR_GOOGLE_API_KEY" />

<!-- Google App ID -->
<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="YOUR_GOOGLE_APP_ID" />

最后,在 Firebase 控制台中开启身份认证功能,选择 Email/Password 作为登录方式。此时,配置 Firebase 的工作已经完成。

3. 用户登录

在实现用户登录功能前,需要创建一个登录界面,包含两个输入框(输入电子邮件和密码)、一个登录按钮以及一个注册按钮。登录按钮被点击后,调用 Firebase 的 signInWithEmailAndPassword() 方法进行用户身份认证。

FirebaseAuth mAuth = FirebaseAuth.getInstance();

// 监听登录按钮点击事件
btnLogin.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        String email = etEmail.getText().toString().trim();
        String password = etPassword.getText().toString().trim();

        if (TextUtils.isEmpty(email)) {
            etEmail.setError("Email is required.");
            return;
        }

        if (TextUtils.isEmpty(password)) {
            etPassword.setError("Password is required.");
            return;
        }

        // 调用 Firebase 的 signInWithEmailAndPassword() 方法进行用户身份认证
        mAuth.signInWithEmailAndPassword(email, password)
            .addOnSuccessListener(new OnSuccessListener<AuthResult>() {
                @Override
                public void onSuccess(AuthResult authResult) {
                    Toast.makeText(MainActivity.this, "Login success", Toast.LENGTH_SHORT).show();
                    // 登录成功后进行相应的操作
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(MainActivity.this, "Login failed: " + e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
    }
});

// 监听注册按钮点击事件
btnRegister.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(MainActivity.this, RegisterActivity.class);
        startActivity(intent);
    }
});
4. 用户注册

在用户注册界面,同样需要创建两个输入框(输入电子邮件和密码)、一个注册按钮以及一个返回按钮。注册按钮被点击后,调用 Firebase 的 createUserWithEmailAndPassword() 方法进行用户注册。注册成功后可以自动跳转到登录界面。

FirebaseAuth mAuth = FirebaseAuth.getInstance();

// 监听注册按钮点击事件
btnRegister.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        String email = etEmail.getText().toString().trim();
        String password = etPassword.getText().toString().trim();

        if (TextUtils.isEmpty(email)) {
            etEmail.setError("Email is required.");
            return;
        }

        if (TextUtils.isEmpty(password)) {
            etPassword.setError("Password is required.");
            return;
        }

        // 调用 Firebase 的 createUserWithEmailAndPassword() 方法进行用户注册
        mAuth.createUserWithEmailAndPassword(email, password)
            .addOnSuccessListener(new OnSuccessListener<AuthResult>() {
                @Override
                public void onSuccess(AuthResult authResult) {
                    Toast.makeText(RegisterActivity.this, "Register success", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
                    startActivity(intent);
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(RegisterActivity.this, "Register failed: " + e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
    }
});

// 监听返回按钮点击事件
btnBack.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
        startActivity(intent);
    }
});

至此,使用 Firebase 实现 Android Studio 用户登录的过程已经介绍完毕。具体实现可以参考 Firebase 官方文档。