التفويض والمصادقة في Swift: دليل شامل لنظامي iOS/macOS

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

التفويض والمصادقة في Swift: نظرة عامة على الأدوات والمكتبات



في تطوير تطبيقات iOS وmacOS، أمان بيانات المستخدم هو الأولوية القصوى. المصادقة (التحقق من الهوية) والتفويض (منح صلاحيات الوصول) هما المكونان الأساسيان لأي تطبيق حديث. في هذه المقالة، سنستعرض الأدوات الرئيسية والمكتبات وأطر عمل Swift لتطبيق تسجيل الدخول عبر Apple ID، والخدمات الخارجية (Google, Facebook)، بالإضافة إلى التخزين المحلي للرموز المميزة.



المقالة موجهة للمطورين الملمين بأساسيات Swift وXcode. جميع أمثلة الكود تم اختبارها على Swift 5.9+ ومتوافقة مع iOS 17+/macOS 14+.



1. AuthenticationServices: Apple Sign In



التفويض المحلي عبر Apple ID هو شرط إلزامي من App Store للتطبيقات التي تستخدم موفري خدمات خارجيين (Google, Facebook). إطار العمل AuthenticationServices يوفر واجهة برمجة تطبيقات بسيطة لتطبيق Sign in with Apple.



import AuthenticationServicesimport SwiftUI

struct SignInWithAppleView: View { var body: some View { SignInWithAppleButton( onRequest: { request in request.requestedScopes = [.fullName, .email] }, onCompletion: { result in switch result { case .success(let authResults): // نحصل على رمز المستخدم guard let credential = authResults.credential as? ASAuthorizationAppleIDCredential, let tokenData = credential.identityToken, let token = String(data: tokenData, encoding: .utf8) else { return } print("Apple token: \\(token)") case .failure(let error): print("Error: \\(error.localizedDescription)") } } ) .signInWithAppleButtonStyle(.black) .frame(width: 280, height: 44) }}


هام: Apple ترجع fullName وemail فقط عند أول تسجيل دخول. للتفويضات اللاحقة، استخدم userID من credential.user.



2. Firebase Authentication: مصادقة متعددة المزودين



Firebase Auth هو حل متعدد المنصات للتفويض عبر البريد الإلكتروني، Google، Facebook، GitHub، ومزودين آخرين. يتضمن مكونات واجهة مستخدم جاهزة وتكامل مع Firestore.



التثبيت عبر Swift Package Manager:

// Package.swift أو عبر Xcode: File > Add Packages// URL: https://github.com/firebase/firebase-ios-sdk.git// اختر FirebaseAuth, FirebaseFirestore


مثال لتسجيل الدخول عبر البريد الإلكتروني/كلمة المرور:

import FirebaseAuth

func signInWithEmail(email: String, password: String) { Auth.auth().signIn(withEmail: email, password: password) { authResult, error in if let error = error { print("Auth error: \\(error.localizedDescription)") return } guard let user = authResult?.user else { return } print("User signed in: \\(user.uid)") }}

func createUser(email: String, password: String) { Auth.auth().createUser(withEmail: email, password: password) { authResult, error in // معالجة التسجيل }}


لتسجيل الدخول عبر Google، يُستخدم GoogleSignIn SDK بشكل إضافي. Firebase يدير الجلسات وتحديث الرموز المميزة تلقائياً.



3. Keychain Services: تخزين آمن للرموز المميزة



تخزين رموز JWT أو رموز التحديث في UserDefaults هو خطأ أمني جسيم. استخدم Keychain (التخزين المشفر في iOS/macOS).



غلاف لـ Keychain:

import Security

class KeychainManager { static func save(key: String, data: Data) { let query: [String: Any] = [ kSecClass as String: kSecClassGener

توصيات