שילוב התחברות פייסבוק לאפליקציות מובייל
בעת שילוב התחברות פייסבוק באפליקציית מובייל, מפתחים נתקלים לעיתים קרובות בבעיות לא מובנות מאליהן: הגדרת URL scheme שגויה, טיפול חסר ב-App Tracking Transparency (ATT), ואימות טוקן בצד השרת. נראה שמספיק לחבר את ה-SDK ולקרוא ללוגין, אבל בפועל 40% מהתקלות נובעות מהגדרה שגויה של iOS או Android. ביצענו מעל 50 אינטגרציות וזיהינו שלוש טעויות מרכזיות: התעלמות מאימות טוקן בצד השרת, בקשת הרשאות מיותרות, ואי בדיקת התרחיש ללא אפליקציית פייסבוק מותקנת. המהנדסים שלנו ייעלו את התהליך — חיסכון בזמן הפיתוח מגיע ל-40% בהשוואה ליישום עצמי. בקשו ייעוץ לאינטגרציה של האפליקציה שלכם.
אינטגרציה טכנית: iOS ו-Android
Meta SDK: עבור iOS אנו משתמשים ב-pod 'FacebookLogin' (CocoaPods) או Swift Package Manager. עבור Android — implementation 'com.facebook.android:facebook-login:latest'. ה-SDK מוסיף כ-4–8 MB לגודל הבינארי. אם גודל הבינארי קריטי, קיימת חלופה — יישום זרימת OAuth 2.0 PKCE דרך הדפדפן ללא Meta SDK. יישום PKCE מקטין את גודל הבינארי ב-35% בהשוואה ל-SDK המלא, אבל מאבד חוויית משתמש מקורית: אין כפתור "התחבר עם פייסבוק" עם עיצוב מותג, ואין מעבר אוטומטי לאפליקציית פייסבוק. Meta SDK המלא מאפשר להשלים אינטגרציה פי 2-3 מהר יותר מאשר כתיבה ידנית של OAuth PKCE.
| מאפיין | SDK מלא | OAuth PKCE ללא SDK |
|---|---|---|
| גודל בינארי | +4–8 MB | +0 MB (רק URL scheme) |
| חוויית משתמש מקורית | כן | לא (זרימת דפדפן) |
| זמן יישום | 1–2 ימים | 3–4 ימים (טיפול ידני) |
ב-iOS יש צורך:
- להוסיף את
Info.plist,FacebookAppIDו-URL SchemeFacebookDisplayNameאלfb{app_id}. - ב-
AppDelegateאוSceneDelegate, לדרוס אתapplication(_:open:options:)ולהעביר שליטה אלApplicationDelegate.shared. - עבור iOS 14+ — לבקש הרשאת App Tracking Transparency דרך
ATTrackingManager.requestTrackingAuthorization(). ללא זה, פייסבוק תקבל רק נתונים מוגבלים.
ב-Android:
- להוסיף את
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>אלAndroidManifest.xml. - עבור Android 11+ יש לציין
<queries>עם החבילה של פייסבוק, אחרת ה-Intent לאפליקציית פייסבוק ייכשל. - להשתמש ב-
LoginManager.getInstance().logInWithReadPermissions(...)כדי להפעיל את זרימת הלוגין.
תהליך שילוב התחברות פייסבוק
- רשמו אפליקציה ב-Facebook Developers Console וקבלו App ID ו-App Secret.
- שלבו את ה-SDK דרך CocoaPods, Swift Package Manager (iOS) או Gradle (Android).
- יישמו את זרימת הלוגין עם בקשת הרשאות (public_profile, email).
- אימות טוקן בצד השרת דרך Graph API debug_token (חובה).
- בדקו על מכשירים אמיתיים עם ובלי אפליקציית פייסבוק מותקנת.
- פרסמו ל-App Store ו-Google Play עם הגדרות נכונות.
אילו הרשאות לבקש?
סט הרשאות מינימלי: ["public_profile", "email"]. public_profile מחזיר id, name, picture. email עשוי להיות null — פייסבוק לא מאמתת את האימייל של המשתמש, והמשתמש יכול להסתיר אותו בהגדרות. יש לטפל בזה בצד הלקוח והשרת: אם האימייל לא מוחזר, בקשו אותו בנוסף או הציעו שיטת אימות חלופית. בקשו רק את ההרשאות שבאמת נחוצות כדי לא להפחיד משתמשים — שיעור ההמרה של לוגין יורד ב-20% בעת בקשת הרשאות מיותרות.
| סוג הרשאות | נתונים | רמה |
|---|---|---|
| public_profile | id, name, picture | נמוכה (ללא בדיקה) |
| email (עשוי להיות null) | נמוכה | |
| user_friends | רשימת חברים | בינונית (דורש בדיקה) |
| publish_actions | פרסום בשם המשתמש | גבוהה (מושבת מאז 2018) |
Graph API ואימות בצד השרת
לאחר קבלת accessToken, הלקוח שולח אותו לשרת האחורי. השרת האחורי מבצע בקשה ל-Graph API:
GET graph.facebook.com/me?fields=id,name,email,picture.type(large)&access_token=TOKEN GET graph.facebook.com/me?fields=id,name,email,picture.type(large)&access_token=TOKEN הוא App-Scoped ID: אותו משתמש רואה מזהה שונה באפליקציות שונות. לצורך אימות אנו משתמשים ב:
GET graph.facebook.com/debug_token?input_token=TOKEN&access_token=APP_TOKEN כאשר id = GET graph.facebook.com/debug_token?input_token=TOKEN&access_token=APP_TOKEN . התשובה חייבת להכיל APP_TOKEN, app_id|app_secret התואמים לשלך, ו-is_valid: true שלא פג תוקפו. Meta ממליצה על אימות בצד השרת (תיעוד Graph API).
מדוע אימות בצד השרת הוא חובה?
ללא זה, תוקף יכול לזייף טוקן או להשתמש בטוקן מאפליקציה אחרת. בדיקת צד שרת היא הדרך האמינה היחידה להבטיח שהטוקן הונפק עבור אפליקציית הפייסבוק שלך ולא פג תוקפו. אנו תמיד כוללים שלב זה באינטגרציות שלנו.
רשימת בדיקה לבעיות נפוצות
- ב-iOS, כפתור פייסבוק לא פותח דיאלוג — בדקו את הגדרת
app_idו-URL schemeexpires_at. - ב-Android, אפליקציית פייסבוק לא מזוהה — עבור Android 11+ יש להוסיף
AppDelegateלמניפסט. - email מגיע כ-null — המשתמש הסתיר את האימייל בהגדרות, טפלו בזה כמקרה רגיל.
- הטוקן נכשל באימות בשרת — בדקו את
fb{app_id}ותפוגה; ודאו שהטוקן הוא מה-<queries>שלכם. - הלוגין לא עובד ללא אפליקציית פייסבוק — ה-SDK נופל אוטומטית לדפדפן, בדקו טיפול בקישורים עמוקים.
כיצד לבדוק התחברות פייסבוק?
השתמשו ב-TestFlight (iOS) ו-Firebase App Distribution (Android). צרו משתמשי בדיקה ב-Facebook Developers Console. בדקו את שני התרחישים: עם אפליקציית פייסבוק מותקנת ודרך הדפדפן. ודאו שקישורים עמוקים (Universal Links / App Links) מחזירים את המשתמש לאפליקציה לאחר הלוגין. החל מ-iOS 14.5, פייסבוק דורשת בקשת ATT לגישה ל-IDFA. אם המשתמש דוחה, Facebook SDK משתמש אוטומטית בשיטות מעקב חלופיות, אבל נפח הנתונים מופחת. אנו ממליצים להכין מראש הסבר מדוע האפליקציה שלכם זקוקה למעקב.
מה כוללת העבודה שלנו
- חיבור והגדרת Facebook SDK ב-iOS (Swift) ו-Android (Kotlin/Java).
- יישום זרימת לוגין עם טיפול בהרשאות.
- אימות טוקן בצד השרת דרך Graph API debug_token.
- טיפול במקרים: אימייל חסר, הרשאות שנדחו, טוקן שפג תוקפו.
- בדיקות על מכשירים עם/בלי אפליקציית פייסבוק.
- תיעוד על סכימת האינטגרציה והוראות לפרסום ב-App Store ו-Google Play.
לוח זמנים: בין 5 ל-8 ימי עסקים לשתי הפלטפורמות. ביצענו מעל 50 אינטגרציות של התחברות פייסבוק. הזמינו יישום — נחבר הכל תוך 5–8 ימים. צרו קשר להערכת פרויקט.







