插件
身份验证
@nativescript/firebase-auth
简介
一个允许您将 Firebase 身份验证 添加到 NativeScript 应用的插件。
注意
在您的应用中初始化 Firebase 时,请将此插件与 @nativescript/firebase-core 插件一起使用。
安装
在项目的根目录中运行以下命令来安装插件。
npm install @nativescript/firebase-auth
使用 @nativescript/firebase-auth
在使用 Firebase Auth 之前,请确保已初始化 Firebase。
要创建新的 Firebase Auth 实例,请在 firebase 实例上调用 auth
方法,如下所示
import { firebase } from '@nativescript/firebase-core'
import '@nativescript/firebase-auth' // only needs to be imported 1x
const auth = firebase().auth()
默认情况下,这允许您使用在平台上安装 Firebase 时使用的默认 Firebase 应用与 Firebase Auth 进行交互。但是,如果您想使用辅助 Firebase 应用,请使用 FirebaseApp
实例调用 auth
方法。
import { firebase } from '@nativescript/firebase-core'
import '@nativescript/firebase-auth'
// create secondary app instance
const config = new FirebaseOptions()
const secondaryApp = firebase.initializeApp(config, 'SECONDARY_APP')
const auth = firebase().auth(secondaryApp)
监听身份验证状态更改
要订阅身份验证状态更改事件,请在 firebase().auth()
返回的 FirebaseAuth 类上调用 addAuthStateChangeListener
方法
import { firebase } from '@nativescript/firebase-core';
import '@nativescript/firebase-auth';
firebase().auth()
.addAuthStateChangeListener((user) => {
if (!user) {
console.log('User is currently signed out!');
} else {
console.log('User is signed in!');
}
}))
匿名登录用户
要匿名登录用户,请在 firebase().auth()
返回的 FirebaseAuth 类实例上调用 signInAnonymously
方法。
import { firebase } from '@nativescript/firebase-core';
import '@nativescript/firebase-auth';
firebase()
.auth()
.signInAnonymously()
.then((cred: [UserCredential]()) => {})
.catch((error) => {});
使用电子邮件和密码创建用户帐户
注意
要使用电子邮件和密码对用户进行身份验证,请按照以下步骤在 Firebase 控制台中启用“电子邮件/密码”登录提供程序
1. 转到 Firebase 控制台。
2. 点击您的项目。
3. 在左侧边栏中,选择“身份验证”。
4. 点击“登录方法”选项卡。
5. 点击“电子邮件/密码”提供程序。
5. 打开“启用”开关。
接下来,要使用电子邮件和密码创建用户帐户,请在 FirebaseAuth 实例 (firebase().auth()
) 上调用 createUserWithEmailAndPassword
方法,并将用户的电子邮件和安全密码作为参数传递。
import { firebase } from '@nativescript/firebase-core';
import '@nativescript/firebase-auth';
firebase()
.auth()
.createUserWithEmailAndPassword('[email protected]', 'password')
.then((cred: [UserCredential]()) => {})
.catch((error) => {});
使用电子邮件和密码登录用户
要使用其注册的电子邮件和密码登录用户,请在 firebase().auth()
上调用 signInWithEmailAndPassword
方法,并传入电子邮件和密码。
import { firebase } from '@nativescript/firebase-core';
import '@nativescript/firebase-auth';
firebase()
.auth()
.signInWithEmailAndPassword('[email protected]', 'password')
.then((cred: [UserCredential]()) => {})
.catch((error) => {});
发送用户的电子邮件验证邮件
要向用户发送电子邮件,请求他们验证其电子邮件,请在 User
对象上调用 sendEmailVerification
方法。
const user = firebase().auth().currentUser
if (user && !user.emailVerified) {
user.sendEmailVerification()
}
注销用户
要注销用户,请在 firebase().auth()
上调用 signOut
方法。
firebase()
.auth()
.signOut()
.then((res) => {
if (res) {
// user signed out
return
}
// else do staff
})
// OR
let signedOut = await firebase().auth().signOut()
使用 Apple 登录用户
Apple 宣布,任何使用第三方登录服务(例如 Facebook、Twitter、Google 等)的应用都必须具有 Apple 登录方法。Apple 登录对于 Android 设备不是必需的。
在开始之前,请配置使用 Apple 登录 并启用 Apple 作为登录提供程序。
接下来,确保应用具有使用 Apple 登录功能。
安装
@nativescript/apple-sign-in
插件。使用插件中的signIn
方法从 Apple 获取用户的凭据。从用户的凭据创建 AuthCredential 实例。调用
signInWithCredential
方法,并将 Apple 凭据作为参数传递。
import { firebase } from '@nativescript/firebase-core'
import { AppleAuthProvider } from '@nativescript/firebase-auth'
import { signIn, User } from '@nativescript/apple-sign-in'
signIn({
scopes: ['EMAIL', 'FULLNAME'],
})
.then((result: User) => {
const oauthCredential = AppleAuthProvider.credential(
result.identityToken,
result.nonce
)
firebase().auth().signInWithCredential(oauthCredential)
})
.catch((err) => console.log('Error signing in: ' + err))
使用 Facebook 帐户登录
在开始之前,请按照Facebook 开发者应用中的步骤启用 Facebook 登录并获取设置 Facebook 登录提供程序所需的 Facebook
应用 ID
和应用密钥
。按照以下步骤启用
Facebook 登录提供程序
- 转到Firebase 控制台。
- 点击您的项目。
- 在左侧边栏中,选择“身份验证”。
- 点击“登录方法”选项卡。
- 点击
Facebook
提供程序。 - 打开
启用
开关 - 输入您的
应用 ID
和应用密钥
,然后点击“保存”。
安装
@nativescript/facebook
插件,并在LoginManager
类上调用logInWithPermissions
方法以从 Facabook 获取用户的凭据,然后将其传递给 Firebase。
import { firebase } from '@nativescript/firebase-core'
import { FacebookAuthProvider } from '@nativescript/firebase-auth'
import { LoginManager, AccessToken } from '@nativescript/facebook'
LoginManager.logInWithPermissions(['public_profile', 'email']).then(
(result) => {
// Once signed in, get the users AccesToken
const data = await AccessToken.currentAccessToken()
// Create a Firebase credential with the AccessToken
const facebookCredential = FacebookAuthProvider.credential(data.tokenString)
// Sign-in the user with the credential
return firebase().auth().signInWithCredential(facebookCredential)
}
)
注意
如果您的用户使用 Facebook 登录,Firebase 不会将 User.emailVerified 属性设置为 true。如果您的用户使用验证电子邮件的提供程序(例如 Google 登录)登录,则它将设置为 true。
使用 Twitter 帐户登录
在使用用户的 Twitter 帐户进行身份验证之前,请按照开始之前中的步骤 1-5 启用
Twitter
登录提供程序。安装
@nativescript/twitter
插件,并在TwitterSignIn
类上调用logIn
方法以从 Twitter 获取用户的凭据(如下所示),然后将其传递给 Firebase。
import { firebase } from '@nativescript/firebase-core'
import { TwitterAuthProvider } from '@nativescript/firebase-auth'
import { Twitter, TwitterSignIn } from '@nativescript/twitter'
Twitter.init('TWITTER_CONSUMER_KEY', 'TWITTER_CONSUMER_SECRET') // called earlier in the app
// Perform the login request
TwitterSignIn.logIn().then((data) => {
const twitterAuthCredential = TwitterAuthProvider.credential(
data.authToken,
data.authTokenSecret
)
firebase().auth().signInWithCredential(twitterAuthCredential)
})
使用 GitHub 帐户登录
从您的 GitHub 开发者设置中设置 GitHub OAuth 应用,并按照开始使用 GitHub 之前中的步骤 1-5 启用
GitHub
登录提供程序。需要一个第三方库来安装 GitHub SDK 并触发身份验证流程。GithubAuthProvider
类的credential
方法实现了这一点。在
firebase().auth()
上调用signInWithCredential
方法,并将 GitHub 凭据作为参数传递。
import { firebase } from '@nativescript/firebase-core'
import { GithubAuthProvider } from '@nativescript/firebase-auth'
const githubAuthCredential = GithubAuthProvider.credential(token)
firebase().auth().signInWithCredential(githubAuthCredential)
使用 Google 帐户登录
使用 Firebase 进行 Google 登录时,大多数配置都已设置好。但是,您需要确保已为 Android 配置计算机的 SHA1 密钥。您可以在验证您的客户端文档上查看如何生成密钥。
- 安装
nativescript/google-signin
插件,通过调用configure
方法配置 Google 登录,将用户登录到其 Google 帐户以获取 ID 和访问令牌。将获取的令牌传递给 Firebase。
import { firebase } from '@nativescript/firebase-core'
import { GoogleAuthProvider } from '@nativescript/firebase-auth'
import { GoogleSignin } from '@nativescript/google-signin'
GoogleSignin.configure() // called earlier in the app
GoogleSignin.signIn().then((user) => {
const credential = GoogleAuthProvider.credential(
user.idToken,
user.accessToken
)
firebase().auth().signInWithCredential(credential)
})
电话号码身份验证
电话身份验证允许用户使用其电话作为身份验证器登录 Firebase。一条包含唯一代码的短信将发送给用户(使用提供的电话号码)。代码获授权后,用户即可登录 Firebase。
注意
最终用户为身份验证提供的电话号码将被 Google 发送和存储,以改善 Google 服务(包括但不限于 Firebase)的垃圾邮件和滥用预防。开发者应确保在使用 Firebase 身份验证电话号码登录服务之前获得适当的最终用户同意。
并非所有国家/地区都支持 Firebase 电话身份验证。有关更多信息,请参阅其常见问题解答。
电话号码身份验证设置
在开始使用电话身份验证之前,请确保已完成以下步骤
- 在Firebase 控制台中启用电话作为登录方法。
- Android:如果您尚未在Firebase 控制台中设置应用的 SHA-1 哈希值,请执行此操作。有关查找应用的 SHA-1 哈希值的信息,请参阅验证您的客户端。
- iOS:在 Xcode 中,启用推送通知 并确保您的 APNs 身份验证密钥已配置到 Firebase Cloud Messaging (FCM)。要查看此步骤的详细说明,请查看Firebase iOS 手机身份验证 文档。
注意:手机号码登录仅适用于真实设备和网页。要在设备模拟器上测试您的身份验证流程,请参阅测试。
使用手机号码登录
在用户登录或将其帐户与 PhoneAuthCredential 关联之前,必须先验证用户的手机号码。通过使用号码调用 verifyPhoneNumber
方法来验证手机号码。号码验证后,将验证 ID 和验证码传递给 Firebase。
import { PhoneAuthProvider } from '@nativescript/firebase-auth'
PhoneAuthProvider.provider()
.verifyPhoneNumber('+44 7123 123 456')
.then((verificationId) => {
// present ui to allow user to enter verificationCode
// use the verificationCode entered by the user to create PhoneAuthCredentials
const credential = PhoneAuthProvider.provider().credential(
verificationId,
verificationCode
)
firebase().auth().signInWithCredential(credential)
})
测试手机号码身份验证
Firebase 支持本地测试手机号码。
输入新的手机号码(例如 +44 7444 555666)和测试验证码(例如 123456)。如果向
verifyPhoneNumber
或signInWithPhoneNumber
方法提供测试手机号码,则不会发送短信。您可以改为将测试验证码直接提供给PhoneAuthProvider
或使用signInWithPhoneNumbers
确认结果处理程序。
API
Auth 类
属性
属性 | 类型 | 描述 |
---|---|---|
app | FirebaseApp | 只读 |
currentUser | 用户 | null | 只读 |
languageCode | 布尔值 | 只读 |
settings | AuthSettings | 只读 |
tenantId | 字符串 | 一个只读属性,返回 Auth 类实例的租户 ID。在tenantId 中了解更多信息。 |
方法
方法 | 返回值 | 描述 |
---|---|---|
useEmulator(host: string, port: number) | void | 有关说明,请参阅 Firebase 文档中的useEmulator。 |
applyActionCode(code: string) | Promise<void> | 有关说明,请参阅 Firebase 文档中的applyActionCode。 |
checkActionCode(code: string) | Promise<ActionCodeInfo> | 有关说明,请参阅 Firebase 文档中的checkActionCode。 |
confirmPasswordReset(code: string, newPassword: string) | Promise<void> | 有关说明,请参阅 Firebase 文档中的confirmPasswordReset。 |
createUserWithEmailAndPassword(email: string, password: string) | Promise<UserCredential> | 有关说明,请参阅 Firebase 文档中的createUserWithEmailAndPassword。 |
fetchSignInMethodsForEmail(email: string) | Promise<string[]> | 有关说明,请参阅 Firebase 文档中的fetchSignInMethodsForEmail。 |
isSignInWithEmailLink(emailLink: string) | 布尔值 | 有关说明,请参阅 Firebase 文档中的isSignInWithEmailLink。 |
addAuthStateChangeListener(listener: (user: User) => void) | void | 有关说明,请参阅 Firebase 文档中的onAuthStateChanged。 |
removeAuthStateChangeListener(listener: (user: User) => void) | void | |
addIdTokenChangeListener(listener: (user: User) => void) | void | 有关说明,请参阅 Firebase 文档中的onIdTokenChanged。 |
removeIdTokenChangListener(listener: (user: User) => void) | void | |
sendPasswordResetEmail(email: string, actionCodeSettings?: ActionCodeSettings) | Promise<void> | 有关说明,请参阅 Firebase 文档中的sendPasswordResetEmail。 |
sendSignInLinkToEmail(email: string, actionCodeSettings?: ActionCodeSettings) | Promise<void> | 有关说明,请参阅 Firebase 文档中的sendSignInLinkToEmail(。 |
signInAnonymously() | Promise<UserCredential> | 有关说明,请参阅 Firebase 文档中的signInAnonymously。 |
signInWithProvider(provider: OAuthProvider) | Promise<UserCredential> | |
getProviderCredential(provider: OAuthProvider) | Promise<OAuthCredential> | |
signInWithCredential(credential: AuthCredential) | Promise<UserCredential> | 有关说明,请参阅 Firebase 文档中的signInWithCredential。 |
signInWithCustomToken(customToken: string) | Promise<UserCredential> | 有关说明,请参阅 Firebase 文档中的signInWithCustomToken。 |
signInWithEmailAndPassword(email: string, password: string) | Promise<UserCredential> | 有关说明,请参阅 Firebase 文档中的signInWithEmailAndPassword。 |
signInWithEmailLink(email: string, emailLink: string) | Promise<UserCredential> | 有关说明,请参阅 Firebase 文档中的signInWithEmailLink。 |
signOut() | 布尔值 | 注销用户。 |
useUserAccessGroup(userAccessGroup: string) | Promise<void> | |
verifyPasswordResetCode(code: string) | Promise<string> | 有关说明,请参阅 Firebase 文档中的verifyPasswordResetCode。 |
用户
用户对象具有以下成员。
属性
属性 | 类型 | 描述 |
---|---|---|
uid | 字符串 | 只读 |
displayName | 字符串 | 只读 |
anonymous | 布尔值 | 只读 |
emailVerified | 布尔值 | 只读 |
email | 字符串 | 只读 |
phoneNumber | 字符串 | 只读 |
providerId | 字符串 | 只读 |
photoURL | 字符串 | 只读 |
metadata | UserMetadata | 只读` |
providerData | UserInfo[] | 只读 |
方法
方法 | 返回值 | 描述 |
---|---|---|
delete() | Promise<void> | 有关说明,请参阅 Firebase 文档中的delete。 |
getIdToken(forceRefresh?: undefined | false | true) | Promise<string> | 有关说明,请参阅 Firebase 文档中的getIdToken。 |
getIdTokenResult(forceRefresh?: undefined | false | true) | Promise<AuthTokenResult> | |
linkWithCredential(credential: AuthCredential) | Promise<UserCredential> | 有关说明,请参阅 Firebase 文档中的linkWithCredential。 |
reauthenticateWithProvider(provider: OAuthProvider) | Promise<UserCredential> | |
reauthenticateWithCredential(credential: AuthCredential) | Promise<UserCredential> | 有关说明,请参阅 Firebase 文档中的reauthenticateWithCredential。 |
reload() | Promise<void> | 有关说明,请参阅 Firebase 文档中的reload。 |
sendEmailVerification(actionCodeSettings?: ActionCodeSettings) | Promise<void> | 有关说明,请参阅 Firebase 文档中的sendEmailVerification。 |
unlink(providerId: string) | Promise<用户> | 有关说明,请参阅 Firebase 文档中的unlink。 |
updateEmail(email: string) | Promise<void> | 有关说明,请参阅 Firebase 文档中的updateEmail。 |
updatePassword(password: string) | Promise<void> | 有关说明,请参阅 Firebase 文档中的updatePassword。 |
updatePhoneNumber(credential: AuthCredential) | Promise<void> | 有关说明,请参阅 Firebase 文档中的updatePhoneNumber。 |
updateProfile(updates: UserProfileChangeRequest) | Promise<void> | 有关说明,请参阅 Firebase 文档中的updateProfile。 |
verifyBeforeUpdateEmail(email: string, actionCodeSettings?: ActionCodeSettings) | Promise<void> | 有关说明,请参阅 Firebase 文档中的verifyBeforeUpdateEmail。 |
UserCredential
属性 | 类型 | 描述 |
---|---|---|
additionalUserInfo | <AdditionalUserInfo> | |
user | <用户> | |
credential | <AuthCredential> |
AdditionalUserInfo
属性 | 类型 | 描述 |
---|---|---|
newUser | 布尔值 | |
profile | Record<string, any> | |
providerId | 字符串 | |
username | 字符串 |
AuthCredential
| 属性 | 类型 | 描述 | | -------------- | ----------------------------------------- | ----------- | ---------- | | ios
| FIRAuthCredential
| | _只读_ | |
android |
com.google.firebase.auth.AuthCredential| _只读_ | |
signInMethod|
字符串 | _只读_ | |
idToken |
字符串 | _只读_ | |
accessToken |
字符串 | _只读_ | |
secret |
字符串` | _只读_ |
OAuthCredential
属性 | 类型 | 描述 |
---|---|---|
ios | 只读 | |
android | 只读 | |
signInMethod | 字符串 | |
idToken | 字符串 | 只读 |
accessToken | 字符串 | 只读 |
secret | 字符串 | 只读 |
许可证
Apache 许可证版本 2.0
- 上一页
- 应用检查
- 下一页
- Crashlytics