Catch up on everthing we announced at this year's Firebase Summit. Learn more

אמת באמצעות טוויטר באנדרואיד

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

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

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

  1. אם לא עשית זאת עדיין, להוסיף Firebase לפרויקט Android שלך .

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

    ג'אווה

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.0')
    
        // Declare the dependency for the Firebase Authentication library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth'
    }
    

    באמצעות Firebase אנדרואיד BOM , האפליקציה שלך תמיד ישתמשו גירסאות תואמות של ספריות אנדרואיד Firebase.

    (אלטרנטיבי) הצהר תלות הספרייה Firebase ללא שימוש BOM

    אם תבחר לא להשתמש ב- Firebase BoM, עליך לציין כל גרסת ספריית Firebase בשורת התלות שלה.

    שים לב שאם אתה משתמש בספריות Firebase מרובים באפליקציה, אנו ממליצים בחום להשתמש בתמונה BOM לנהל גרסאות הספרייה, אשר מבטיח כי כל הגרסאות תואמות.

    dependencies {
        // Declare the dependency for the Firebase Authentication library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth:21.0.1'
    }
    

    קוטלין+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.0')
    
        // Declare the dependency for the Firebase Authentication library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth-ktx'
    }
    

    באמצעות Firebase אנדרואיד BOM , האפליקציה שלך תמיד ישתמשו גירסאות תואמות של ספריות אנדרואיד Firebase.

    (אלטרנטיבי) הצהר תלות הספרייה Firebase ללא שימוש BOM

    אם תבחר לא להשתמש ב- Firebase BoM, עליך לציין כל גרסת ספריית Firebase בשורת התלות שלה.

    שים לב שאם אתה משתמש בספריות Firebase מרובים באפליקציה, אנו ממליצים בחום להשתמש בתמונה BOM לנהל גרסאות הספרייה, אשר מבטיח כי כל הגרסאות תואמות.

    dependencies {
        // Declare the dependency for the Firebase Authentication library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth-ktx:21.0.1'
    }
    

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

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

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

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

  1. בניית מופע של OAuthProvider באמצעות הבונה שלה עם מזהה ספק Twitter.com

    OAuthProvider.Builder provider = OAuthProvider.newBuilder("twitter.com");
    
  2. אופציונאלי: ציין פרמטרי OAuth מנהג נוספים שאתה רוצה לשלוח עם בקשת OAuth.

    // Target specific email with login hint.
    provider.addCustomParameter("lang", "fr");
    

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

  3. אימות באמצעות Firebase באמצעות אובייקט ספק OAuth. לידיעתך, בשונה פעולות FirebaseAuth אחרות, זה ייקח שליטה על ממשק המשתמש שלכם על ידי לצוץ Tab Chrome מותאם אישית . כתוצאה מכך, אינם מפנים את הפעילות שלך OnSuccessListener ו OnFailureListener שאתם מייחסים כפי שהם מיד לנתק כאשר המבצע מתחיל את ממשק המשתמש.

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

    כדי לבדוק אם יש תוצאה תלוי ועומד, קורא getPendingAuthResult :

    Task<AuthResult> pendingResultTask = firebaseAuth.getPendingAuthResult();
    if (pendingResultTask != null) {
      // There's something already here! Finish the sign-in for your user.
      pendingResultTask
          .addOnSuccessListener(
              new OnSuccessListener<AuthResult>() {
                @Override
                public void onSuccess(AuthResult authResult) {
                  // User is signed in.
                  // IdP data available in
                  // authResult.getAdditionalUserInfo().getProfile().
                  // The OAuth access token can also be retrieved:
                  // authResult.getCredential().getAccessToken().
                  // The OAuth secret can be retrieved by calling:
                  // authResult.getCredential().getSecret().
                }
              })
          .addOnFailureListener(
              new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                  // Handle failure.
                }
              });
    } else {
      // There's no pending result so you need to start the sign-in flow.
      // See below.
    }
    

    כדי להפעיל את השלט בזרימה, קורא startActivityForSignInWithProvider :

    firebaseAuth
        .startActivityForSignInWithProvider(/* activity= */ this, provider.build())
        .addOnSuccessListener(
            new OnSuccessListener<AuthResult>() {
              @Override
              public void onSuccess(AuthResult authResult) {
                // User is signed in.
                // IdP data available in
                // authResult.getAdditionalUserInfo().getProfile().
                // The OAuth access token can also be retrieved:
                // authResult.getCredential().getAccessToken().
                // The OAuth secret can be retrieved by calling:
                // authResult.getCredential().getSecret().
              }
            })
        .addOnFailureListener(
            new OnFailureListener() {
              @Override
              public void onFailure(@NonNull Exception e) {
                // Handle failure.
              }
            });
    

    על סיומו המוצלח, גישת OAuth אסימון הקשורים הספק יכולה להיגזר OAuthCredential האובייקט חזר.

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

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

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

    // The user is already signed-in.
    FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
    
    firebaseUser
        .startActivityForLinkWithProvider(/* activity= */ this, provider.build())
        .addOnSuccessListener(
            new OnSuccessListener<AuthResult>() {
              @Override
              public void onSuccess(AuthResult authResult) {
                // Twitter credential is linked to the current user.
                // IdP data available in
                // authResult.getAdditionalUserInfo().getProfile().
                // The OAuth access token can also be retrieved:
                // authResult.getCredential().getAccessToken().
                // The OAuth secret can be retrieved by calling:
                // authResult.getCredential().getSecret().
              }
            })
        .addOnFailureListener(
            new OnFailureListener() {
              @Override
              public void onFailure(@NonNull Exception e) {
                // Handle failure.
              }
            });
    
    
  5. אותו הדפוס יכול לשמש עם startActivityForReauthenticateWithProvider אשר ניתן להשתמש בם כדי לאחזר אישורים טריים עבור פעולות רגישות הדורשות לאחרונה התחברות.

    // The user is already signed-in.
    FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
    
    firebaseUser
        .startActivityForReauthenticateWithProvider(/* activity= */ this, provider.build())
        .addOnSuccessListener(
            new OnSuccessListener<AuthResult>() {
              @Override
              public void onSuccess(AuthResult authResult) {
                // User is re-authenticated with fresh tokens and
                // should be able to perform sensitive operations
                // like account deletion and email or password
                // update.
              }
            })
        .addOnFailureListener(
            new OnFailureListener() {
              @Override
              public void onFailure(@NonNull Exception e) {
                // Handle failure.
              }
            });
    

הצעדים הבאים

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

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

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

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

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

ג'אווה

FirebaseAuth.getInstance().signOut();

קוטלין+KTX

Firebase.auth.signOut()