یک کاربر ایجاد کنید
شما با فراخوانی متد createUser
یا ورود به سیستم کاربر برای اولین بار با استفاده از یک ارائه دهنده هویت فدرال، مانند Google Sign-In یا Facebook Login ، یک کاربر جدید در پروژه Firebase خود ایجاد می کنید.
همچنین میتوانید از بخش احراز هویت کنسول Firebase در صفحه کاربران، کاربران تأیید شده با رمز عبور جدید ایجاد کنید.
کاربر وارد شده فعلی را دریافت کنید
راه پیشنهادی برای دریافت کاربر فعلی با تنظیم شنونده در شیء Auth است:
سویفت
handle = Auth.auth().addStateDidChangeListener { auth, user in // ... }
هدف-C
self.handle = [[FIRAuth auth] addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) { // ... }];
با استفاده از شنونده، وقتی کاربر فعلی را دریافت میکنید، مطمئن میشوید که شی Auth در یک حالت میانی (مانند مقداردهی اولیه) نیست.
همچنین می توانید با استفاده از ویژگی currentUser
کاربر وارد شده فعلی را دریافت کنید. اگر کاربر وارد سیستم نشده باشد، currentUser
صفر است:
سویفت
if Auth.auth().currentUser != nil { // User is signed in. // ... } else { // No user is signed in. // ... }
هدف-C
if ([FIRAuth auth].currentUser) { // User is signed in. // ... } else { // No user is signed in. // ... }
پروفایل کاربری را دریافت کنید
برای دریافت اطلاعات نمایه کاربر، از ویژگی های یک نمونه از FIRUser
استفاده کنید. به عنوان مثال:
سویفت
let user = Auth.auth().currentUser if let user = user { // The user's ID, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, // if you have one. Use getTokenWithCompletion:completion: instead. let uid = user.uid let email = user.email let photoURL = user.photoURL var multiFactorString = "MultiFactor: " for info in user.multiFactor.enrolledFactors { multiFactorString += info.displayName ?? "[DispayName]" multiFactorString += " " } // ... }
هدف-C
FIRUser *user = [FIRAuth auth].currentUser; if (user) { // The user's ID, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, // if you have one. Use getTokenWithCompletion:completion: instead. NSString *email = user.email; NSString *uid = user.uid; NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "]; for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) { [multiFactorString appendString:info.displayName]; [multiFactorString appendString:@" "]; } NSURL *photoURL = user.photoURL; // ... }
اطلاعات نمایه ارائه دهنده خاص کاربر را دریافت کنید
برای دریافت اطلاعات نمایه بازیابی شده از ارائه دهندگان ورود به سیستم مرتبط با یک کاربر، از ویژگی providerData
استفاده کنید. به عنوان مثال:
سویفت
let userInfo = Auth.auth().currentUser?.providerData[indexPath.row] cell?.textLabel?.text = userInfo?.providerID // Provider-specific UID cell?.detailTextLabel?.text = userInfo?.uid
هدف-C
id<FIRUserInfo> userInfo = [FIRAuth auth].currentUser.providerData[indexPath.row]; cell.textLabel.text = [userInfo providerID]; // Provider-specific UID cell.detailTextLabel.text = [userInfo uid];
به روز رسانی نمایه یک کاربر
می توانید اطلاعات اولیه نمایه کاربر - نام نمایشی کاربر و URL عکس نمایه - را با کلاس UserProfileChangeRequest
به روز کنید. به عنوان مثال:
سویفت
let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest() changeRequest?.displayName = displayName changeRequest?.commitChanges { error in // ... }
هدف-C
FIRUserProfileChangeRequest *changeRequest = [[FIRAuth auth].currentUser profileChangeRequest]; changeRequest.displayName = userInput; [changeRequest commitChangesWithCompletion:^(NSError *_Nullable error) { // ... }];
آدرس ایمیل کاربر را تنظیم کنید
می توانید آدرس ایمیل کاربر را با روش updateEmail
تنظیم کنید. به عنوان مثال:
سویفت
Auth.auth().currentUser?.updateEmail(to: email) { error in // ... }
هدف-C
[[FIRAuth auth].currentUser updateEmail:userInput completion:^(NSError *_Nullable error) { // ... }];
یک ایمیل تأیید برای کاربر ارسال کنید
میتوانید با روش sendEmailVerificationWithCompletion:
یک ایمیل تأیید آدرس برای کاربر ارسال کنید. به عنوان مثال:
سویفت
Auth.auth().currentUser?.sendEmailVerification { error in // ... }
هدف-C
[[FIRAuth auth].currentUser sendEmailVerificationWithCompletion:^(NSError *_Nullable error) { // ... }];
میتوانید الگوی ایمیلی را که در بخش احراز هویت کنسول Firebase ، در صفحه الگوهای ایمیل استفاده میشود، سفارشی کنید. به الگوهای ایمیل در مرکز راهنمایی Firebase مراجعه کنید.
همچنین این امکان وجود دارد که وضعیت را از طریق URL ادامه دهید تا هنگام ارسال ایمیل تأیید به برنامه تغییر مسیر دهید.
علاوه بر این، میتوانید با بهروزرسانی کد زبان در نمونه Auth قبل از ارسال ایمیل، ایمیل تأیید را بومیسازی کنید. به عنوان مثال:
سویفت
Auth.auth().languageCode = "fr" // To apply the default app language instead of explicitly setting it. // Auth.auth().useAppLanguage()
هدف-C
[FIRAuth auth].languageCode = @"fr"; // To apply the default app language instead of explicitly setting it. // [[FIRAuth auth] useAppLanguage];
رمز عبور یک کاربر را تنظیم کنید
می توانید رمز عبور کاربر را با روش updatePassword
تعیین کنید. به عنوان مثال:
سویفت
Auth.auth().currentUser?.updatePassword(to: password) { error in // ... }
هدف-C
[[FIRAuth auth].currentUser updatePassword:userInput completion:^(NSError *_Nullable error) { // ... }];
یک ایمیل بازنشانی رمز عبور ارسال کنید
با روش sendPasswordReset
می توانید یک ایمیل بازنشانی رمز عبور برای کاربر ارسال کنید. به عنوان مثال:
سویفت
Auth.auth().sendPasswordReset(withEmail: email) { error in // ... }
هدف-C
[[FIRAuth auth] sendPasswordResetWithEmail:userInput completion:^(NSError *_Nullable error) { // ... }];
میتوانید الگوی ایمیلی را که در بخش احراز هویت کنسول Firebase ، در صفحه الگوهای ایمیل استفاده میشود، سفارشی کنید. به الگوهای ایمیل در مرکز راهنمایی Firebase مراجعه کنید.
همچنین این امکان وجود دارد که وضعیت را از طریق URL ادامه دهید تا هنگام ارسال ایمیل بازنشانی رمز عبور به برنامه هدایت شوید.
علاوه بر این، میتوانید با بهروزرسانی کد زبان در نمونه Auth قبل از ارسال ایمیل، ایمیل بازنشانی رمز عبور را بومیسازی کنید. به عنوان مثال:
سویفت
Auth.auth().languageCode = "fr" // To apply the default app language instead of explicitly setting it. // Auth.auth().useAppLanguage()
هدف-C
[FIRAuth auth].languageCode = @"fr"; // To apply the default app language instead of explicitly setting it. // [[FIRAuth auth] useAppLanguage];
همچنین میتوانید ایمیلهای بازنشانی رمز عبور را از کنسول Firebase ارسال کنید.
حذف یک کاربر
شما می توانید یک حساب کاربری را با روش delete
حذف کنید. به عنوان مثال:
سویفت
let user = Auth.auth().currentUser
user?.delete { error in
if let error = error {
// An error happened.
} else {
// Account deleted.
}
}
هدف-C
FIRUser *user = [FIRAuth auth].currentUser;
[user deleteWithCompletion:^(NSError *_Nullable error) {
if (error) {
// An error happened.
} else {
// Account deleted.
}
}];
همچنین میتوانید کاربران را از بخش تأیید هویت کنسول Firebase در صفحه کاربران حذف کنید.
احراز هویت مجدد یک کاربر
برخی از اقدامات حساس امنیتی - مانند حذف یک حساب ، تنظیم یک آدرس ایمیل اصلی و تغییر رمز عبور - مستلزم این است که کاربر اخیراً وارد سیستم شده باشد. اگر یکی از این اقدامات را انجام دهید و کاربر خیلی وقت پیش وارد سیستم شده باشد، عمل با خطای FIRAuthErrorCodeCredentialTooOld
با شکست مواجه می شود. وقتی این اتفاق میافتد، با دریافت اعتبارنامه ورود به سیستم جدید از کاربر و ارسال اعتبار برای reauthenticate
کاربر را دوباره احراز هویت کنید. به عنوان مثال:
سویفت
let user = Auth.auth().currentUser
var credential: AuthCredential
// Prompt the user to re-provide their sign-in credentials
user?.reauthenticate(with: credential) { error in
if let error = error {
// An error happened.
} else {
// User re-authenticated.
}
}
هدف-C
FIRUser *user = [FIRAuth auth].currentUser;
FIRAuthCredential *credential;
// Prompt the user to re-provide their sign-in credentials
[user reauthenticateWithCredential:credential completion:^(NSError *_Nullable error) {
if (error) {
// An error happened.
} else {
// User re-authenticated.
}
}];
وارد کردن حساب های کاربری
با استفاده از دستور auth:import
در Firebase CLI می توانید حساب های کاربری را از یک فایل به پروژه Firebase وارد کنید. به عنوان مثال:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14