Android Firebase 身份验证 - Google 登录

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

Firebase 身份验证提供后端服务,可轻松使用 SDK 和内置 UI 库在应用程序中验证用户。大多数应用程序都需要用户的身份,并且在了解他们的状态后,应用程序会将用户的数据安全地保存在云中。它的目标是构建一个安全的身份验证系统。

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

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

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

1. 在 https://firebase.google.com/ 创建一个 Firebase 开发者帐户,然后单击“转到控制台”。

2. 单击“添加项目”。

3. 填写项目名称并选择分析位置、云 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. 将 Firebase SDK 依赖项添加到应用程序的 .gradle 文件中,然后在 IDE 中单击“立即同步”,然后单击“下一步”。

Android Firebase Authentication - Google Login

build.gradle (项目)

build.gradle (模块)

AndroidManifest.xml

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

9. 运行您的应用程序以验证安装配置,如果一切正常,它会显示一条成功消息,然后单击“继续进入控制台”。

Android Firebase Authentication - Google Login

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

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

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

MainActivity.java

将以下代码添加到 MainActivity.java 类中。 MainActivity.java 类中使用的类和方法的功能如下

  1. new FirebaseAuth.AuthStateListener(){} 用作身份验证侦听器,以检查用户是否已登录。如果用户成功登录,我们将放置其他 Firebase 逻辑。
  2. new GoogleSignInOptions.Builder() 方法配置 Google 登录以使用 requestEmail 选项获取用户数据。
  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 Services 的 API 方法的最终结果。

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

输出

Android Firebase Authentication - Google Login Android Firebase Authentication - Google Login
Android Firebase Authentication - Google Login Android Firebase Authentication - Google Login
下一主题#