میتوانید Firebase Authentication را با سیستم اصالتسنجی سفارشی ادغام کنید. برای این کار، سرور اصالتسنجیتان را بهگونهای اصلاح کنید که وقتی کاربر با موفقیت به سیستم وارد میشود، کدهای امضاشده سفارشی تولید کند. برنامه شما این توکن را دریافت میکند و از آن برای اصالتسنجی با Firebase استفاده میکند.
قبل از شروع
- پروژه Firebase ایجاد کنید و برنامهتان را ثبت کنید (اگر قبلاً این کار را نکردهاید).
-
از Swift Package Manager برای نصب و مدیریت وابستگیهای Firebase استفاده کنید.
- در Xcode، درحالیکه پروژه برنامهتان باز است، به File > Add Packages (فایل > افزودن بستهها) بروید.
- وقتی خواسته شد، مخزن کیت توسعه نرمافزار Firebase برای پلاتفرمهای Apple را اضافه کنید:
- کتابخانه Firebase Authentication را انتخاب کنید.
- پرچم
-ObjCرا به بخش Other Linker Flags (سایر پرچمهای پیونددهنده) در تنظیمات ساخت هدف اضافه کنید. - وقتی تمام شد، Xcode بهطور خودکار شروع به حل و بارگیری وابستگیهای شما در پسزمینه میکند.
https://github.com/firebase/firebase-ios-sdk.git
- کلیدهای سرور پروژهتان را دریافت کنید:
-
در کنسول Firebase، به
تنظیمات > حسابهای سرویس بروید. - در پایین بخش Firebase Admin SDK، روی تولید کلید خصوصی جدید کلیک کنید.
- جفت کلید عمومی/خصوصی حساب سرویس جدید بهطور خودکار در رایانهتان ذخیره میشود. این فایل را در سرور اصالتسنجیتان کپی کنید.
-
در کنسول Firebase، به
اصالتسنجی با Firebase
- واحد
FirebaseCoreرا درUIApplicationDelegateو همچنین هر واحد Firebase دیگری که نماینده برنامهتان استفاده میکند وارد کنید. برای مثال، برای استفاده از Cloud Firestore و Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- یک
FirebaseAppنمونه مشترک را در روشapplication(_:didFinishLaunchingWithOptions:)نماینده برنامهتان پیکربندی کنید:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- اگر از SwiftUI استفاده میکنید، باید یک نماینده برنامه ایجاد کنید و آن را
ازطریق
UIApplicationDelegateAdaptorیاNSApplicationDelegateAdaptorبه ساختارAppخود متصل کنید. همچنین باید swizzling نماینده برنامه را غیرفعال کنید. برای اطلاعات بیشتر، دستورالعملهای SwiftUI را ببینید.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- وقتی کاربران به سیستم برنامه شما وارد میشوند، اطلاعات اعتباری ورود به سیستم آنها (برای مثال، نام کاربری و گذرواژه آنها) را به سرور اصالتسنجی خود ارسال کنید. سرور شما اعتبارنامه را بررسی میکند و اگر معتبر باشد، رمز سفارشی برمیگرداند.
- پساز دریافت کردن کد سفارشی از سرور اصالتسنجی، آن را به
signInWithCustomTokenارسال کنید تا کاربر به سیستم وارد شود:Swift
Auth.auth().signIn(withCustomToken: customToken ?? "") { user, error in // ... }
Objective-C
[[FIRAuth auth] signInWithCustomToken:customToken completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
مراحل بعدی
پساز اینکه کاربر برای اولینبار به سیستم وارد شد، حساب کاربری جدیدی ایجاد میشود و به اطلاعات اعتباری (یعنی نام کاربری و گذرواژه، شماره تلفن، یا اطلاعات ارائهدهنده احراز هویت) که کاربر با آن به سیستم وارد شده است پیوند داده میشود. این حساب جدید بهعنوان بخشی از پروژه Firebase شما ذخیره میشود و میتوان از آن برای شناسایی کاربر در هر برنامه در پروژه شما، صرفنظر از نحوه ورود کاربر به سیستم، استفاده کرد.
-
در برنامههایتان، میتوانید اطلاعات نمایه پایه کاربر را از شیء
Userدریافت کنید. مدیریت کاربران را ببینید. در Firebase Realtime Database و Cloud Storage قوانین امنیتی، میتوانید شناسه کاربر منحصربهفرد کاربر واردشده به سیستم را از متغیر
authدریافت کنید، و از آن برای کنترل دادههایی که کاربر میتواند به آنها دسترسی داشته باشد استفاده کنید.
میتوانید به کاربران اجازه دهید بااستفاده از چندین ارائهدهنده اصالتسنجی به سیستم برنامهتان وارد شوند. برای این کار، اعتبارنامه ارائهدهنده اصالتسنجی را به حساب کاربری موجود پیوند دهید.
برای خارج کردن کاربر از سیستم،
signOut: را فراخوانی کنید.
Swift
let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print("Error signing out: %@", signOutError) }
Objective-C
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }
همچنین ممکن است بخواهید کد رسیدگی به خطا را برای طیف کامل خطاهای اصالتسنجی اضافه کنید. رسیدگی به خطاها را ببینید.