注册测试电话号码
本文档介绍如何在 Identity Platform 中注册电话号码以进行开发。这样,您就可以测试涉及发送短信的身份验证方法,例如电话登录和多重身份验证。
使用测试号码(而不是您拥有的真实号码)有以下几个优点:
- 它与 iOS 和 Android 模拟器无缝集成。
- 它可以避免发送实际短信的开销。
- 可以使用同一电话号码运行连续测试,而不会受到短信发送数量的限制。
- 您可以编写集成测试,而不会被安全检查所屏蔽。
- 它不会消耗您的配额配额。
您最多可以注册 10 个电话号码用于开发。
注册测试电话号码
要注册测试电话号码,请按以下步骤操作:
转到 Google Cloud 控制台中的 Identity Providers(身份提供商)页面。
转到“身份提供商”页面如果您要测试电话身份验证,请在提供商列表中找到它,然后点击修改图标。如果您要测试多重身份验证,请选择多重短信身份验证标签页,然后点击修改。
在用于测试的电话号码下,输入要注册的电话号码和验证码。
电话号码应使用 E.164 格式,并且不能已被分配给现有 Identity Platform 用户。验证码应为 6 位数字。出于安全考虑,请选择难以猜测的数字,并避免
+1 123-456-7890
等明显的模式。点击保存。
测试电话号码被 Identity Platform 视为真实的电话号码,因此请妥善保存它们,并定期进行轮替。
手动测试
您可以立即在应用中直接使用测试电话号码,也可以使用 iOS 和 Android 模拟器。使用测试电话号码登录时,系统不会发送短信验证码;您需要输入您在创建测试号码时注册的代码。
登录后,系统会使用测试电话号码创建一个 Identity Platform 用户。此用户拥有与真实用户相同的行为和属性,包括有效的 ID 令牌,这意味着它可以访问您的所有应用和服务。
要限制测试用户的访问权限,请考虑创建具有有限权限的测试角色,并使用自定义声明分配该角色。
集成测试
除了手动测试外,Client SDK 还包含一些可帮助您编写集成测试的 API。这些 API 可以停用 reCAPTCHA 和应用验证要求,从而通过自动化更轻松地绕过它们。
以下示例展示了如何测试使用电话号码的用户登录:
JavaScript
// Turn off phone app verification.
firebase.auth().settings.appVerificationDisabledForTesting = true;
var phoneNumber = "+16505554567";
var testVerificationCode = "123456";
// Render a fake reCAPTCHA and resolve without app verification.
var appVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container');
// signInWithPhoneNumber will call appVerifier.verify(), which will resolve
// with a fake reCAPTCHA response.
firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier)
.then(function (confirmationResult) {
// confirmationResult can resolve using testVerificationCode.
return confirmationResult.confirm(testVerificationCode)
}).catch(function (error) {
// Error; SMS not sent
// ...
});
停用应用验证后,可见和不可见的模拟 reCAPTCHA 验证程序的行为有所不同:
可见的 reCAPTCHA:为了模拟用户点击,reCAPTCHA 将在短暂延迟后自动完成。
不可见的 reCAPTCHA:为了模拟应用验证,reCAPTCHA 会在
appVerifier.verify()
被调用时自动完成。
模拟reCAPTCHA 完成或过期时,仍会触发其回调。