Google is committed to advancing racial equity for Black communities. See how.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

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

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

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

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

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

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

    ג'אווה

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:27.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 Android BoM , האפליקציה שלך תשתמש תמיד בגרסאות תואמות של ספריות Android של 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:20.0.4'
    }
    

    Kotlin + KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:27.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 Android BoM , האפליקציה שלך תשתמש תמיד בגרסאות תואמות של ספריות Android של 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:20.0.4'
    }
    

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

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

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

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

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

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

    // Target specific email with login hint.
    provider.addCustomParameter("login", "your-email@gmail.com");
    

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

  3. אופציונלי : ציין טווחי OAuth 2.0 נוספים מעבר לפרופיל הבסיסי שברצונך לבקש מספק האימות. אם היישום שלך דורש גישה לנתוני משתמשים פרטיים מממשקי API של GitHub, יהיה עליך לבקש הרשאות לגישה לממשקי API של GitHub תחת הרשאות API במסוף המפתחים של GitHub. טווחי ה- OAuth המבוקשים חייבים להיות תואמים מדויקים לאלה שהוגדרו מראש בהרשאות ה- API של האפליקציה.

    // Request read access to a user's email addresses.
    // This must be preconfigured in the app's API permissions.
    List<String> scopes =
        new ArrayList<String>() {
          {
            add("user:email");
          }
        };
    provider.setScopes(scopes);
    
  4. אמת באמצעות Firebase באמצעות אובייקט ספק ה- OAuth. שים לב שבניגוד לפעולות FirebaseAuth אחרות, זה ישתלט על ממשק המשתמש שלך על ידי הקפצת כרטיסיית Chrome מותאמת אישית . כתוצאה מכך, אל OnSuccessListener OnFailureListener שלך ב- OnSuccessListener וב- OnFailureListener שאתה מצרף מכיוון שהם 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().
                }
              })
          .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().
              }
            })
        .addOnFailureListener(
            new OnFailureListener() {
              @Override
              public void onFailure(@NonNull Exception e) {
                // Handle failure.
              }
            });
    

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

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

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

  5. בעוד שהדוגמאות שלעיל מתמקדות בזרימות כניסה, יש לך גם את היכולת לקשר ספק GitHub למשתמש קיים באמצעות 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) {
                // GitHub 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().
              }
            })
        .addOnFailureListener(
            new OnFailureListener() {
              @Override
              public void onFailure(@NonNull Exception e) {
                // Handle failure.
              }
            });
    
    
  6. ניתן להשתמש באותה תבנית עם 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();

Kotlin + KTX

Firebase.auth.signOut()