Android Firebase 身份验证 - Google 登录

2024年11月12日 | 阅读 6 分钟

Firebase 身份验证 提供后端服务,方便使用 SDK 和内置 UI 库在应用程序中进行用户身份验证。大多数应用程序都需要了解用户身份,并在了解其状态后,安全地将用户数据存储在云端。其目标是构建一个安全的身份验证系统。

使用 Firebase 身份验证,我们将对 Google、Facebook、GitHub、Twitter 等进行登录身份验证。

在本教程中,我们将使用 GoogleFirebase API 将 Firebase 身份验证集成到我们的 Android 应用程序中,实现 Google 登录功能。

在 Google Firebase 账户上创建和配置 Android 应用的步骤

1. 在 https://firebase.google.com/ 上创建 Firebase 开发者账户,然后点击“前往控制台”。

2. 点击“添加项目”

3. 填写项目名称,选择分析位置、Cloud Firestore 位置,接受控制条款,然后点击“创建项目”


Android Firebase Authentication - Google Login

4. 当您的新项目成功准备好后,点击“继续”


Android Firebase Authentication - Google Login

5. 选择 “Android” 平台 SDK。


Android Firebase Authentication - Google Login

6. 通过提供所需的应用程序信息将您的应用注册到 Firebase,然后点击“注册应用”

我们可以通过以下步骤获取应用程序证书 SHA-1 密钥

  1. 打开 Android 项目。
  2. 从右侧面板打开 Gradle 选项卡。
  3. 双击“signingReport”。
  4. 我们将在“Gradle 控制台”中找到应用的 SHA-1 密钥。

Android Firebase Authentication - Google Login

7. 现在下载 “google-services.json” 文件,将其集成到 Android 应用程序中,然后点击“下一步”


Android Firebase Authentication - Google Login

8. 在应用程序的 .gradle 文件中添加 firebase SDK 依赖项,然后在 IDE 中点击“立即同步”,最后点击“下一步”


Android Firebase Authentication - Google Login

build.gradle(项目)

build.gradle (模块)

AndroidManifest.xml

在 AndroidManifest.xml 文件中添加 Internet 权限以访问网络连接。

9. 运行您的应用以验证安装配置,如果一切正常,它将显示成功消息,然后点击“继续前往控制台”


Android Firebase Authentication - Google Login

10. 在控制台页面,选择 身份验证 -gt; 登录方法 -gt;Google -gt; 启用,然后点击“保存”


Android Firebase Authentication - Google Login

Android Firebase 身份验证结合 Google 登录示例

在此示例中,我们将把 Firebase 身份验证与 Google 登录集成到我们的 Android 应用中。一旦用户通过 Google 登录成功,我们将通过 Firebase 身份验证进行身份验证,然后将用户重定向到下一个活动(ProfileActivity)并显示其详细信息。

我们需要将下载的 “google-services.json” 文件粘贴到我们的 Android 项目应用程序目录中。

activity_main.xml

在 activity_main.xml 文件中添加以下代码。在此活动中,我们实现了自定义 Google 登录按钮。

strings.xml

在 string.xml 文件中添加您的 Web 客户端 ID。您也可以在程序中使用默认的 Google Web 客户端 ID。

MainActivity.java

在 MainActivity.java 类中添加以下代码。MainActivity.java 类中使用的类和方法的函数说明如下

  1. new FirebaseAuth.AuthStateListener(){} 用作身份验证监听器,以检查用户是否已登录。如果用户成功登录,我们将放置其他 Firebase 逻辑。
  2. new GoogleSignInOptions.Builder() 方法通过 requestEmail 选项配置 Google 登录以获取用户数据。
  3. 点击登录按钮,它会调用 Auth.GoogleSignInApi.getSignInIntent(googleApiClient) 并使用 startActivityForResult() 启动意图。
  4. onActivityResult() 中,我们获取 Google 登录请求的结果。
  5. 如果 handleSignInResult(result) 返回 true,我们通过 idToken 获取 Google 身份验证。
  6. 调用 firebaseAuthWithGoogle(credential) 以便使用 Google 进行 Firebase 身份验证。

如果 Firebase 身份验证成功,我们将用户重定向到下一个活动(ProfileActivity.java)。

profile_activity.xml

在 profile_activity.xml 文件中添加以下代码。ImageView 用于显示用户个人资料图片,TextView 用于显示姓名、电子邮件、ID,还有一个按钮用于注销。

ProfileActivity.java

在此 ProfileActivity.java 类中,我们获取用户信息并显示它们。GoogleSignInResult 类实现了 Result 接口,该接口代表调用 Google Play 服务 API 方法的最终结果。

GoogleSignInAccount 类保存用户的必要信息。

输出

Android Firebase Authentication - Google Login Android Firebase Authentication - Google Login Android Firebase Authentication - Google Login Android Firebase Authentication - Google Login
下一主题Android 通知