Google is committed to advancing racial equity for Black communities. See how.
דף זה תורגם על ידי 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. ודא שה- URI my-app-12345.firebaseapp.com/__/auth/handler OAuth של Firebase שלך ​​(למשל my-app-12345.firebaseapp.com/__/auth/handler ) מוגדר ככתובת האתר שלך להתקשרות חוזרת בדף ההגדרות של האפליקציה שלך my-app-12345.firebaseapp.com/__/auth/handler של אפליקציית Twitter שלך.
  5. לחץ על שמור .

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

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

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

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

    לפרמטרים שתומך בטוויטר, עיין בתיעוד של 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().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;
}

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