Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now
דף זה תורגם על ידי Cloud Translation API.
Switch to English

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

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

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

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

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

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

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

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

    1. פתח את תצורת הפרויקט שלך: לחץ פעמיים על שם הפרויקט בתצוגת העץ השמאלית. בחר באפליקציה שלך מהקטע TARGETS , ואז בחר בכרטיסייה מידע והרחיב את הקטע סוגי כתובות אתרים .
    2. לחץ על כפתור + והוסף ערכת כתובות אתרים עבור מזהה הלקוח ההפוך שלך. כדי למצוא ערך זה, פתח את קובץ התצורה של 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"}];
        

    לפרמטרים שטוויטר תומך, עיין בתיעוד Twitter OAuth . שים לב שאתה לא יכול להעביר פרמטרים נדרשים של Firebase באמצעות setCustomParameters . פרמטרים אלה הם client_id , redirect_uri , response_type , scope and state .

  4. אופציונלי : אם ברצונך להתאים אישית את האופן שבו האפליקציה שלך מציגה את SFSafariViewController או UIWebView בעת הצגת ה- reCAPTCHA למשתמש, צור מחלקה מותאמת אישית שתואמת את פרוטוקול FIRAuthUIDelegate , getCredentialWithUIDelegate:completion: אותה ל- 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 של Twitter .

    לדוגמה, כדי לקבל מידע על פרופיל בסיסי, אתה יכול להתקשר ל- 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;
}

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