אמת באמצעות טוויטר ב- iOS

באפשרותך לאפשר למשתמשים לבצע אימות עם Firebase באמצעות ספקי OAuth כמו Twitter על ידי שילוב כניסה OAuth כללית באפליקציה שלך באמצעות SDK Firebase כדי לבצע את זרימת הכניסה הקצה עד הסוף.

לפני שאתה מתחיל

כדי להיכנס למשתמשים באמצעות חשבונות טוויטר, תחילה עליך להפעיל את טוויטר כספק כניסה לפרויקט Firebase שלך:

  1. להוסיף Firebase לפרויקט iOS שלך .

  2. כלול את התרמילים הבאים שלך Podfile :

    pod 'Firebase/Auth'
    
  3. בשנות ה קונסולת Firebase , פתח את הקטע המחבר.
  4. 'הכניסה דרך כרטיסיית שיטה, לאפשר ספק טוויטר.
  5. מוסיפים את מפתח API ואת סוד API ממסוף המפתחים של ספק כי לתצורת ספק:
    1. רשמו את האפליקציה שלכם כיישום מפתח בטוויטר ולקבל סוד מפתח API API OAuth של האפליקציה שלך.
    2. ודא שלך Firebase OAuth הפניה URI (למשל my-app-12345.firebaseapp.com/__/auth/handler ) מוגדר ככתובת אתר התקשרות להרשאה שלך בדף ההגדרות של האפליקציה שלך על שלך config של טוויטר אפליקציה .
  6. לחץ על שמור.

לטפל בזרימת הכניסה באמצעות SDK של Firebase

כדי לטפל בזרימת הכניסה עם Firebase iOS SDK, בצע את הצעדים הבאים:

  1. הוסף תוכניות URL מותאמות אישית לפרויקט ה- Xcode שלך:

    1. פתח את תצורת הפרויקט שלך: לחץ פעמיים על שם הפרויקט בתצוגת העץ השמאלית. בחר ביישום מהמדור הממקד, ולאחר מכן בחר את כרטיסיית המידע, וכן להרחיב את מקטע סוגי URL.
    2. לחץ על הלחצן +, ולהוסיף ערכת URL עבור זיהוי הלקוח הפוך שלך. כדי למצוא את הערך הזה, לפתוח את GoogleService-Info.plist קובץ תצורה, ולחפש את REVERSED_CLIENT_ID המפתח. העתק את הערך של המפתח, ולהדביק אותו בשדה כתובת האתר הקמעונות בדף התצורה. השאר את שדות האחרים ריקים.

      בסיום התצורה שלך צריכה להיראות דומה למצב הבא (אך עם הערכים הספציפיים ליישום שלך):

  2. יצירת מופע של OAuthProvider באמצעות מזהה ספק twitter.com.

    מָהִיר

        var provider = OAuthProvider(providerID: "twitter.com")
        

    מטרה-ג

        FIROAuthProvider *provider = [FIROAuthProvider providerWithProviderID:@"twitter.com"];
        
  3. אופציונלי: ציין פרמטרי OAuth מנהג נוספים שאתה רוצה לשלוח עם בקשת OAuth.

    מָהִיר

        provider.customParameters = [
          "lang": "fr"
          ]
        

    מטרה-ג

        [provider setCustomParameters:@{@"lang": @"fr"}];
        

    עבור הפרמטרים טוויטר תומך, לראות את התיעוד OAuth טוויטר . שים לב, אתה לא יכול להעביר פרמטרים-נדרש Firebase עם setCustomParameters . פרמטרים אלה הם client_id, redirect_uri, response_type, היקף ומדינה.

  4. אופציונלי: אם ברצונך להתאים אישית את הדרך מתנות האפליקציה שלך SFSafariViewController או UIWebView בעת הצגת reCAPTCHA למשתמש, ליצור מחלקה מותאמת אישית תואמת את FIRAuthUIDelegate פרוטוקול, ולהעביר אותו getCredentialWithUIDelegate:completion: .

  5. אמת באמצעות Firebase באמצעות אובייקט ספק ה- OAuth.

    מָהִיר

        provider.getCredentialWith(nil) { credential, error in
          if error != nil {
            // Handle error.
          }
          if credential != nil {
            Auth.auth().signIn(with: credential) { authResult, error in
              if error != nil {
                // Handle error.
              }
              // User is signed in.
              // IdP data available in authResult.additionalUserInfo.profile.
              // Twitter OAuth access token can also be retrieved by:
              // authResult.credential.accessToken
              // Twitter OAuth ID token can be retrieved by calling:
              // authResult.credential.idToken
              // Twitter OAuth secret can be retrieved by calling:
              // authResult.credential.secret
            }
          }
        }
        

    מטרה-ג

        [provider getCredentialWithUIDelegate:nil
                                   completion:^(FIRAuthCredential *_Nullable credential, NSError *_Nullable error) {
          if (error) {
           // Handle error.
          }
          if (credential) {
            [[FIRAuth auth] signInWithCredential:credential
                                      completion:^(FIRAuthDataResult *_Nullable authResult, NSError *_Nullable error) {
              if (error) {
                // Handle error.
              }
              // User is signed in.
              // IdP data available in authResult.additionalUserInfo.profile.
              // Twitter OAuth access token can also be retrieved by:
              // authResult.credential.accessToken
              // Twitter OAuth ID token can be retrieved by calling:
              // authResult.credential.idToken
              // Twitter OAuth secret can be retrieved by calling:
              // authResult.credential.secret
            }];
          }
        }];
        

    באמצעות קוד גישה מסוג OAuth, אתה יכול להתקשר API טוויטר .

    לדוגמה, כדי לקבל את פרטי הפרופיל הבסיסיים, אתה יכול לקרוא לממשק API REST, להעביר את קוד הגישה את Authorization הכותרת:

    https://api.twitter.com/labs/1/users?usernames=TwitterDev
    
  6. בעוד שהדוגמאות שלעיל מתמקדות בזרימות כניסה, יש לך גם את היכולת לקשר ספק טוויטר למשתמש קיים. לדוגמא, אתה יכול לקשר ספקים מרובים לאותו משתמש המאפשר להם להיכנס עם אחד מהם.

    מָהִיר

        Auth().currentUser.link(withCredential: credential) { authResult, error in
          if error != nil {
            // Handle error.
          }
          // Twitter credential is linked to the current user.
          // IdP data available in authResult.additionalUserInfo.profile.
          // Twitter OAuth access token can also be retrieved by:
          // authResult.credential.accessToken
          // Twitter OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
          // Twitter OAuth secret can be retrieved by calling:
          // authResult.credential.secret
        }
        

    מטרה-ג

        [[FIRAuth auth].currentUser
            linkWithCredential:credential
                    completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
          if (error) {
            // Handle error.
          }
          // Twitter credential is linked to the current user.
          // IdP data available in authResult.additionalUserInfo.profile.
          // Twitter OAuth access token is can also be retrieved by:
          // authResult.credential.accessToken
          // Twitter OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
          // Twitter OAuth secret can be retrieved by calling:
          // authResult.credential.secret
        }];
        
  7. אותו הדפוס יכול לשמש עם reauthenticateWithCredential אשר ניתן להשתמש בם כדי לאחזר אישורים טריים עבור פעולות רגישות הדורשות לאחרונה התחברות.

    מָהִיר

        Auth().currentUser.reauthenticateWithCredential(withCredential: credential) { authResult, error in
          if error != nil {
            // Handle error.
          }
          // User is re-authenticated with fresh tokens minted and
          // should be able to perform sensitive operations like account
          // deletion and email or password update.
          // IdP data available in result.additionalUserInfo.profile.
          // Additional OAuth access token is can also be retrieved by:
          // authResult.credential.accessToken
          // Twitter OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
          // Twitter OAuth secret can be retrieved by calling:
          // authResult.credential.secret
        }
        

    מטרה-ג

        [[FIRAuth auth].currentUser
            reauthenticateWithCredential:credential
                              completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
          if (error) {
            // Handle error.
          }
          // User is re-authenticated with fresh tokens minted and
          // should be able to perform sensitive operations like account
          // deletion and email or password update.
          // IdP data available in result.additionalUserInfo.profile.
          // Additional OAuth access token is can also be retrieved by:
          // authResult.credential.accessToken
          // Twitter OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
          // Twitter OAuth secret can be retrieved by calling:
          // authResult.credential.secret
        }];
        

הצעדים הבאים

לאחר שמשתמש נכנס בפעם הראשונה, נוצר חשבון משתמש חדש ומקושר לאישורי האישור - כלומר לשם המשתמש והסיסמה, מספר הטלפון או פרטי ספק האימות - המשתמש נכנס איתו. חשבון חדש זה מאוחסן כחלק מפרויקט Firebase שלך, וניתן להשתמש בו לזיהוי משתמש בכל אפליקציה בפרויקט שלך, ללא קשר לאופן בו המשתמש נכנס.

  • באפליקציות שלך, אתה יכול לקבל את המידע הבסיסי של הפרופיל האישי של המשתמש מן FIRUser האובייקט. ראו ניהול משתמשים .

  • בבסיס הנתונים בזמן אמת Firebase שלך לאחסון בענן אבטחה חוקי , אתה יכול לקבל את שנכנסים למערכת זיהוי המשתמש הייחודי של המשתמש מן auth משתנה, ולהשתמש בו כדי לקבוע אילו נתונים גישה יכול משתמש.

תוכל לאפשר למשתמשים להיכנס לאפליקציה שלך דרך ספקי אימות מרובים על ידי מקשר auth אישורי ספק לחשבון משתמש קיים.

כדי לצאת מהחשבון משתמש, קוראים signOut: .

מָהִיר

    let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print("Error signing out: %@", signOutError)
}
  

מטרה-ג

    NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

ייתכן גם שתרצה להוסיף קוד לטיפול בשגיאות עבור כל מגוון שגיאות האימות. ראה שגיאות ידית .