- 版本:3.3.2
- GitHub: https://github.com/NativeScript/firebase
- NPM: https://npmjs.net.cn/package/%40nativescript%2Ffirebase-auth
- 下载
- 昨天: 71
- 上周: 369
- 上个月: 2004
@nativescript/firebase-auth
简介
一个插件,允许您将 Firebase 认证 添加到您的 NativeScript 应用程序。
注意:请使用 @nativescript/firebase-core 插件与该插件一起使用,以在您的应用程序中初始化 Firebase。
安装
在项目的根目录中运行以下命令以安装插件。
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 App 与 Firebase Auth 交互。但是,如果您想使用辅助 Firebase App,请使用 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 控制台中启用
Email/Password
登录提供程序
1. 访问 Firebase 控制台。
2. 点击您的项目。
3. 在左侧边栏中,选择Authentication
。
4. 点击Sign-in method
选项卡。
5. 点击Email\password
提供程序。
5. 打开Enable
开关。
接下来,要使用电子邮件和密码创建用户账户,请调用 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) => {});
使用电子邮件和密码登录用户
要使用注册的电子邮件和密码登录用户,请调用 signInWithEmailAndPassword
方法,传入电子邮件和密码,在 firebase().auth()
上。
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();
}
登出用户
要登出用户,请调用 signOut
方法,在 firebase().auth()
上。
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 Sign-In 方法。对于 Android 设备不需要 Apple Sign-In。
-
在开始之前,请先配置使用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
App ID
和App secret
。 -
按照以下步骤启用
Facebook登录提供者
- 转到Firebase控制台。
- 点击你的项目。
- 在左侧边栏中,选择
身份验证
。 - 点击
登录方法
选项卡。 - 点击
Facebook
提供者。 - 开启
启用
。 - 输入你的
App ID
和App secret
,然后点击保存
。
-
安装插件
@nativescript/facebook
,并在LoginManager
类上调用logInWithPermissions
方法以获取Facebook的凭证并将其传递给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 Sign-In时,大多数配置已经设置好。但是,您需要确保您的机器的SHA1密钥已配置为与Android一起使用。您可以在认证您的客户端文档中查看如何生成密钥。
- 安装插件
nativescript/google-signin
,通过调用configure
方法配置Google Sign-in,使用户登录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云消息(FCM)配置。要查看此步骤的详细说明,请查看Firebase iOS手机认证文档。
注意;手机号登录仅适用于真实设备和网页。要在设备模拟器上测试您的身份验证流程,请参阅测试。
使用手机号码登录用户
用户手机号必须首先通过调用带有号码的verifyPhoneNumber
方法进行验证,然后用户才能登录或使用PhoneAuthCredential将账户与手机号链接。通过将验证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
认证类
属性
属性 | 类型 | 描述 |
---|---|---|
app |
FirebaseApp |
只读 |
currentUser |
用户 | null |
只读 |
languageCode |
布尔值 |
只读 |
settings |
AuthSettings | 只读 |
tenantId |
字符串 |
这是一个只读属性,它返回Auth类实例的租户ID。有关更多信息,请参阅tenantId。 |
方法
方法 | 返回 | 描述 |
---|---|---|
useEmulator(host: string, port: number) |
void |
有关说明,请参阅Firebase文档中的useEmulator。 |
applyActionCode(code: string) |
Promise |
有关说明,请参阅Firebase文档中的applyActionCode。 |
checkActionCode(code: string) |
Promise |
有关说明,请参阅Firebase文档中的checkActionCode。 |
confirmPasswordReset(code: string, newPassword: string) |
Promise |
有关说明,请参阅Firebase文档中的confirmPasswordReset。 |
createUserWithEmailAndPassword(email: string, password: string) |
Promise |
有关说明,请参阅Firebase文档中的createUserWithEmailAndPassword。 |
fetchSignInMethodsForEmail(email: string) |
Promise |
有关说明,请参阅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 |
关于描述,请参阅Firebase文档中的sendPasswordResetEmail。 |
sendSignInLinkToEmail(email: string, actionCodeSettings?: ActionCodeSettings) |
Promise |
关于描述,请参阅Firebase文档中的sendSignInLinkToEmail。 |
signInAnonymously() |
Promise |
关于描述,请参阅Firebase文档中的signInAnonymously。 |
signInWithProvider(provider: OAuthProvider) |
Promise |
|
getProviderCredential(provider: OAuthProvider) |
Promise<OAuthCredential> | |
signInWithCredential(credential: AuthCredential) |
Promise |
关于描述,请参阅Firebase文档中的signInWithCredential。 |
signInWithCustomToken(customToken: string) |
Promise |
关于描述,请参阅Firebase文档中的signInWithCustomToken。 |
signInWithEmailAndPassword(email: string, password: string) |
Promise |
关于描述,请参阅Firebase文档中的signInWithEmailAndPassword。 |
signInWithEmailLink(email: string, emailLink: string) |
Promise |
关于描述,请参阅Firebase文档中的signInWithEmailLink。 |
signOut() |
布尔值 |
登出用户。 |
useUserAccessGroup(userAccessGroup: string) |
Promise |
|
verifyPasswordResetCode(code: string) |
Promise<string> |
关于描述,请参阅Firebase文档中的verifyPasswordResetCode。 |
用户
用户对象具有以下成员。
属性
属性 | 类型 | 描述 |
---|---|---|
uid |
字符串 |
只读 |
displayName |
字符串 |
只读 |
anonymous |
布尔值 |
只读 |
emailVerified |
布尔值 |
只读 |
email |
字符串 |
只读 |
phoneNumber |
字符串 |
只读 |
providerId |
字符串 |
只读 |
photoURL |
字符串 |
只读 |
metadata |
UserMetadata | 只读` |
providerData |
UserInfo[] | 只读 |
方法
方法 | 返回 | 描述 |
---|---|---|
delete() |
Promise |
关于描述,请参阅Firebase文档中的delete。 |
getIdToken(forceRefresh?: undefined | false | true) |
Promise<string> |
关于描述,请参阅Firebase文档中的getIdToken。 |
getIdTokenResult(forceRefresh?: undefined | false | true) |
Promise<AuthTokenResult> | |
linkWithCredential(credential: AuthCredential) |
Promise |
关于描述,请参阅Firebase文档中的linkWithCredential。 |
reauthenticateWithProvider(provider: OAuthProvider) |
Promise |
|
reauthenticateWithCredential(credential: AuthCredential) |
Promise |
关于描述,请参阅Firebase文档中的reauthenticateWithCredential。 |
reload() |
Promise |
关于描述,请参阅Firebase文档中的reload。 |
sendEmailVerification(actionCodeSettings?: ActionCodeSettings) |
Promise |
关于描述,请参阅Firebase文档中的sendEmailVerification。 |
unlink(providerId: string) |
Promise<User> | 关于描述,请参阅Firebase文档中的unlink。 |
updateEmail(email: string) |
Promise |
关于描述,请参阅Firebase文档中的updateEmail。 |
updatePassword(password: string) |
Promise |
关于描述,请参阅Firebase文档中的updatePassword。 |
updatePhoneNumber(credential: AuthCredential) |
Promise |
关于描述,请参阅Firebase文档中的updatePhoneNumber。 |
updateProfile(updates: UserProfileChangeRequest) |
Promise |
关于描述,请参阅Firebase文档中的updateProfile。 |
verifyBeforeUpdateEmail(email: string, actionCodeSettings?: ActionCodeSettings) |
Promise |
关于描述,请参阅Firebase文档中的verifyBeforeUpdateEmail。 |
用户凭证
属性 | 类型 | 描述 |
---|---|---|
additionalUserInfo |
<附加用户信息> | |
用户 |
<用户> | |
凭证 |
<认证凭证> |
附加用户信息
属性 | 类型 | 描述 |
---|---|---|
新用户 |
布尔值 |
|
个人资料 |
Record |
|
providerId |
字符串 |
|
用户名 |
字符串 |
认证凭证
属性 | 类型 | 描述 |
---|---|---|
ios |
FIRAuthCredential ` |
|
android |
com.google.firebase.auth.AuthCredential |
只读 |
登录方法 |
字符串 |
只读 |
idToken |
字符串 |
只读 |
accessToken |
字符串 |
只读 |
密钥 |
字符串 |
只读 |
OAuth凭证
属性 | 类型 | 描述 |
---|---|---|
ios |
只读 | |
android |
只读 | |
登录方法 |
字符串 |
|
idToken |
字符串 |
只读 |
accessToken |
字符串 |
只读 |
密钥 |
字符串 |
只读 |
许可证
Apache License Version 2.0