通过 Identity Platform 让用户使用电子邮件登录
了解如何使用 Identity Platform 让用户通过电子邮件地址和密码登录。
如需在 Google Cloud 控制台中直接遵循有关此任务的分步指导,请点击操作演示:
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: Identity Platform Admin, Service Usage Admin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
进入 IAM - 选择项目。
- 点击 授予访问权限。
-
在新的主账号字段中,输入您的用户标识符。 这通常是 Google 账号的电子邮件地址。
- 在选择角色列表中,选择一个角色。
- 如需授予其他角色,请点击 添加其他角色,然后添加其他各个角色。
- 点击 Save(保存)。
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: Identity Platform Admin, Service Usage Admin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
进入 IAM - 选择项目。
- 点击 授予访问权限。
-
在新的主账号字段中,输入您的用户标识符。 这通常是 Google 账号的电子邮件地址。
- 在选择角色列表中,选择一个角色。
- 如需授予其他角色,请点击 添加其他角色,然后添加其他各个角色。
- 点击 Save(保存)。
-
启用 Identity Platform
在 Google Cloud 控制台中,前往 Cloud Marketplace 中的 Identity Platform 页面。
点击启用 Identity Platform。
配置电子邮件地址登录
前往身份提供商页面。
在身份提供商页面上,点击添加提供商。
在选择一个提供商列表中,选择
电子邮件地址/密码。点击已启用切换开关将其切换为开启。
如需保存提供商设置,请点击保存。
创建用户
在 Google Cloud 控制台中,前往用户页面。
点击添加用户。
在电子邮件地址字段中,输入电子邮件地址和密码。请记下这两个值,因为您在后面的步骤中需要用到它们。
如需添加用户,请点击添加。用户页面上会列出新用户。
登录用户
用户登录的步骤因应用使用的 SDK 版本而异。 确保您针对自己的应用采取了正确的步骤。
SDK v9(模块化)
安装 SDK 并初始化 Firebase
Firebase JS SDK 版本 9 使用 JavaScript 模块格式。
此工作流使用 npm,并且需要模块打包器或 JavaScript 框架工具,因为 v9 SDK 经过了优化,可与模块打包器配合使用,以消除未使用的代码(摇树优化)并缩减 SDK 大小。
如需使用 v9 SDK,请执行以下步骤:
在项目目录中,使用 npm 安装 Firebase:
npm install firebase
在您的应用中,初始化 Firebase 并创建一个 Firebase 应用对象:
import { initializeApp } from 'firebase/app'; const firebaseConfig = { apiKey: "API_KEY", authDomain: "AUTH_DOMAIN" }; const app = initializeApp(firebaseConfig);
替换以下内容:
API_KEY
:您的 Firebase 项目的apiKey
。AUTH_DOMAIN
:您的 Firebase 项目的authDomain
。
您可以在应用的 Firebase 项目配置中找到这些值。
Firebase 应用是一种类似于容器的对象,用于存储常见配置,并在各种 Firebase 服务之间共享身份验证凭据。在代码中初始化 Firebase 应用对象后,可以添加并开始使用 Firebase 服务。
在 JavaScript 中访问 Identity Platform
现在,您已初始化 Firebase SDK,可以在应用中的任何位置使用它。例如,下面的应用会尝试登录硬编码的用户,并在网页上显示结果。
import { initializeApp } from 'firebase/app';
import {
onAuthStateChanged,
signInWithEmailAndPassword,
getAuth
} from 'firebase/auth';
const firebaseConfig = {
apiKey: "API_KEY",
authDomain: "AUTH_DOMAIN"
};
const app = initializeApp(firebaseConfig);
const auth = getAuth(app, {/* extra options */ });
document.addEventListener("DOMContentLoaded", () => {
onAuthStateChanged(auth, (user) => {
if (user) {
document.getElementById("message").innerHTML = "Welcome, " + user.email;
}
else {
document.getElementById("message").innerHTML = "No user signed in.";
}
});
signIn();
});
function signIn() {
const email = "EMAIL_ID";
const password = "PASSWORD";
signInWithEmailAndPassword(auth, email, password)
.catch((error) => {
document.getElementById("message").innerHTML = error.message;
});
}
替换以下内容:
API_KEY
:您的 Firebase 项目的apiKey
。AUTH_DOMAIN
:您的 Firebase 项目的authDomain
。EMAIL_ID
:您在本指南前面部分中创建的用户电子邮件地址。PASSWORD
:您在本指南前面部分创建的用户密码。
使用模块打包器缩减大小
Firebase Web SDK 设计为可与模块打包器结合使用,用于移除任何未使用的代码(摇树优化)。对于正式版应用,我们强烈建议您使用此方法。对于通过 npm 安装并导入您的代码库的库,Angular CLI、Next.js、Vue CLI 或 Create React App 等工具会自动处理模块打包事宜。
例如,您可以使用 Webpack 生成包含捆绑的应用和依赖项代码的 dist
文件夹。如需了解详情,请参阅将模块打包器与 Firebase 搭配使用。
将 JavaScript 导入您的网页
创建名为
index.html
的新文件。添加两个基本 HTML 容器,并导入捆绑的 js。
<script defer src="js/bundled.js"></script> <div>Identity Platform Quickstart</div> <div id="message">Loading...</div>
在网络浏览器中启动
index.html
。此时屏幕上会出现一条显示用户电子邮件地址的欢迎消息。
SDK v8(旧版)
创建网页
在本地机器上,创建一个名为
index.html
的新文件。在 HTML 文件中,添加两个 HTML 容器:
<div>Identity Platform Quickstart</div> <div id="message">Loading...</div>
使用您的 API 密钥初始化 Identity Platform Client SDK
在 Google Cloud 控制台中,前往身份提供商页面。
点击
应用设置详情 。将初始化代码复制到
index.html
中。
登录用户
如需登录用户,请将以下代码复制到
index.html
中:<script> var email = "EMAIL_ID"; var password = "PASSWORD"; firebase.auth().onAuthStateChanged(function(user) { if (user) { document.getElementById("message").innerHTML = "Welcome, " + user.email; } else { document.getElementById("message").innerHTML = "No user signed in."; } }); firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) { document.getElementById("message").innerHTML = error.message; }); </script>
此代码会调用
signInWithEmailAndPassword()
,然后使用onAuthStateChanged()
回调来处理结果。替换以下内容:
- EMAIL_ID:您之前创建的用户的电子邮件地址
- PASSWORD:您之前创建的用户的密码
在网络浏览器中打开
index.html
。此时会出现显示用户电子邮件的欢迎消息。
如需详细了解 Identity Platform 的其他限制,请参阅配额和限制。
清理
为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。
删除提供商和用户
如果您使用的是现有 Google Cloud 项目,请删除您创建的提供商和用户,以避免账号产生费用:
在 Google Cloud 控制台中,前往身份提供商页面。
如需删除提供商,请点击提供商名称旁边的
Delete(删除)。如需确认删除,请点击删除。在 Google Cloud 控制台中,前往用户页面。
如需删除您创建的用户,请点击用户名称旁边的
删除。如需确认删除,请点击删除。
删除项目
为了避免产生费用,最简单的方法是删除您为本教程创建的项目。
如需删除项目,请执行以下操作:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
后续步骤
在真实应用中,您的用户将使用专用注册页面进行注册,然后通过输入其电子邮件地址和密码进行登录。Identity Platform 提供了一个预构建的身份验证界面,可用于这些页面,您也可以构建自己的身份验证界面。您可能还想支持其他登录方法,例如社交服务提供商(如 Facebook 或 Google)、手机号码、OIDC 或 SAML。
详细了解以下内容:
使用 JavaScript、Android、iOS、C++ 或 Unity 登录用户。