میتوانید Firebase Authentication را با سیستم اصالتسنجی سفارشی ادغام کنید با اصلاح سرور اصالتسنجیتان برای تولید کردن نشانهای امضاشده سفارشی وقتی کاربر با موفقیت به سیستم وارد میشود. برنامه شما این کد را دریافت میکند و از آن برای اصالتسنجی با Firebase استفاده میکند.
قبل از شروع
- اگر قبلاً این کار را نکردهاید، پروژه Firebase ایجاد کنید و برنامه خود را ثبت کنید.
-
از «مدیر بسته Swift» برای نصب و مدیریت وابستگیهای Firebase استفاده کنید.
- در Xcode، با باز بودن پروژه برنامه، به File > Add Packages (فایل > افزودن بستهها) پیمایش کنید.
- وقتی درخواست شد، مخزن کیت توسعه نرمافزار پلاتفرمهای Firebase Apple را اضافه کنید:
- کتابخانه Firebase Authentication را انتخاب کنید.
- پرچم
-ObjCرا به بخش پرچمهای پیونددهنده دیگر در تنظیمات ساخت هدف اضافه کنید. - پساز اتمام، 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پیوست کنید. همچنین باید تغییرات در نماینده برنامه را غیرفعال کنید. برای اطلاعات بیشتر، دستورالعملهای 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; }
همچنین ممکن است بخواهید کد مدیریت خطا را برای طیف کامل خطاهای اصالتسنجی اضافه کنید. مدیریت خطاها را ببینید.