פתרון בעיות של שגיאות נפוצות ב-Credential Manager

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

קוד ותיאור של שגיאה הסיבה

android.os.TransactionTooLargeException

הבעיה הזו נגרמת בגלל בעיה מוכרת שבה ה-API‏ credentialManager.getCredential() ב-Android מגרסה 14 ואילך לא מציג את תיבת הדו-שיח לכניסה לחשבון כשיש כמה חשבונות Google במכשיר. הבעיה הזו מופיעה ספציפית ב-GetGoogleIdOption ולא ב-GetSignInWithGoogleOption. הבעיה הזו נפתרה בגרסה 24.40.XX ואילך של Google Play Services.

CreateCredentialCancellationException

המשתמש ביטל את ההרשמה למפתח הגישה או את השחזור שלו.

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

GetCredentialCancellationException

תהליך אחזור פרטי הכניסה הסתיים כי לא התקבלה הרשאת המשתמש הנדרשת. השגיאה הזו מופיעה בדרך כלל כשמשתמש מבטל ידנית את תהליך הכניסה, אבל היא יכולה גם להצביע על כך שהבקשה לא אושרה בגלל מגבלות טכניות. השגיאה הזו מצביעה על כך שלא התקבלה הסכמה, ולכן לא כדאי לנסות שוב את הבקשה באופן אוטומטי, כי זה יוצר חוויית משתמש שלילית. עם זאת, מפתחים צריכים לעקוב אחרי התדירות של החריגה הזו. נפח גבוה של 'ביטולים' עשוי להצביע על הגדרה שגויה – כמו היקף חסר או שגוי – שמונעת את השלמת ממשק המשתמש של ההרשאה בהצלחה. אם אתם מבחינים במגמות לא צפויות, כדאי לבדוק את פרמטרי הבקשה ואת ההגדרה של [הצד המסתמך][2].

הערה: הודעת השגיאה יכולה להיות שונה בהתאם לסוג האישורים:

  • במקרה של מפתחות גישה, הודעת השגיאה יכולה להיות "המשתמש ביטל את ההרשמה או האחזור של מפתח הגישה".
  • בכניסה באמצעות חשבון Google, הודעת השגיאה יכולה להיות 'הפעילות בוטלה על ידי המשתמש'.

CreateCredentialCustomException או GetCredentialCustomException

כשמשתמשים ב-SDK של צד שלישי כדי לבצע קריאות ל-API עם אובייקט בקשה שהוא מחלקת משנה של CreateCustomCredentialRequest או GetCustomCredentialOption, יכול להיות שיוצגו שגיאות. אם זה קורה, בודקים ב-SDK קבועים של סוג חריג מותאם אישית שתואמים ל-e.type. אם לא נמצאה התאמה, אפשר להשליך את החריג או לתעד אותו ביומן.

CreateCredentialInterruptedException או GetCredentialInterruptedException

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

CreateCredentialUnknownException

במהלך שמירת הסיסמה, נמצאה תגובה לשגיאה בסיסמה מהקשה אחת 16: [28431] דילוג על שמירת הסיסמה כי סביר להניח שהמשתמש יקבל הנחיה למילוי אוטומטי ב-Android.

השגיאה הזו משפיעה רק על Android 13 וגרסאות קודמות, כש-Google מוגדרת כספק המילוי האוטומטי. במקרים כאלה, המשתמשים יקבלו בקשה לשמירה מהתכונה 'מילוי אוטומטי', והסיסמה תישמר במנהל הסיסמאות של Google. חשוב לדעת שפרטי הכניסה שנשמרים באמצעות התכונה 'מילוי אוטומטי של Google' מסונכרנים דו-כיוונית עם Credential Manager API. לכן, אפשר להתעלם מהשגיאה הזו.

CreatePublicKeyCredentialDomException & GetPublicKeyCredentialDomException

סביר להניח שהחריגה ב-DOM מכילה domError ספציפי יותר. אפשר למפות אותו ל-WebAuthn DomException לפרטים נוספים.

CreatePublicKeyCredentialDomException & GetPublicKeyCredentialDomException

אי אפשר לאמת את הבקשה הנכנסת.

השרת של מנהל הסיסמאות לא מזהה את מזהה החבילה של האפליקציה. ההודעה הזו מצביעה על בעיה פוטנציאלית בשילוב בצד השרת, ובמיוחד בהגדרת הקישור של הנכס הדיגיטלי. כדאי לבדוק שוב את הדיוק של מזהה החבילה ושל ה-SHA בקובץ ה-Asset Link.

CreatePublicKeyCredentialDomException:

לא ניתן ליצור מפתח במהלך ההרשמה

הבעיה הזו יכולה להתרחש כשמשתמש סוגר את תיבת הדו-שיח של נעילת המסך במהלך ההרשמה.

CreateCredentialNoCreateOptionException

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

CreatePublicKeyDomException & GetPublicKeyCredentialDomException

המשתמש ביטל את ההרשמה של מפתח הגישה.

השחזור של מפתח הגישה בוטל על ידי המשתמש.

הבעיה הזו יכולה להתרחש כשמשתמש סוגר את תיבת הדו-שיח של טביעת האצבע במהלך ההרשמה או השחזור של מפתח הגישה.

GetCredentialProviderConfigurationException & CreateCredentialProviderConfigurationException

לא נמצאו תלותיות בספק getCredentialAsync

לא נמצאו תלות בספק עבור createCredentialAsync

חסרה התלות androidx.credentials:credentials-play-services-auth:<latest-version>.

GetCredentialUnsupportedException או CreateCredentialUnsupportedException

המכשיר שלכם לא תומך במנהל האישורים

מוודאים שספריית האישורים מעודכנת לגרסה 1.2.1 ואילך.

GetPublicKeyCredentialException

פענוח פרטי הכניסה נכשל

הבעיה הזו מתרחשת כשמנסים להשתמש במפתח גישה אחרי שיוצאים מחשבונות Google ונכנסים אליהם שוב. מנחים את המשתמש להיכנס מחדש לחשבון Google שלו במכשיר.

NoCreateOptionException

החריג הזה הוא התנהגות צפויה כשמשתמש לא הגדיר במכשיר שלו מפתחות גישה או אם הוא לא הגדיר מנהל הסיסמאות.

NoCredentialException

לא נמצאו פרטי כניסה תואמים

החריגה הזו מתרחשת במצבים הבאים:

  • הערך של setFilterByAuthorizedAccounts מוגדר כ-true בלי חשבונות מורשים במכשיר.
  • אין חשבונות מחוברים במכשיר (לא נוספו חשבונות או שצריך לאמת מחדש את החשבונות).
  • ממשק המשתמש של דף האפשרויות לא מופיע אם ההנחיות לכניסה מושבתות בחשבון כלשהו במכשיר. ההגדרה הגלובלית הזו נמצאת בקטע הגדרות חשבון Google > כניסה באמצעות Google, והיא צריכה להיות מופעלת כדי שממשק המשתמש של הגיליון התחתון יוצג לכל חשבון. השינוי הזה לא משפיע על תהליך הלחיצה על הלחצן.

אי אפשר ליצור מפתח גישה כי הנתונים המוצפנים נעולים

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

  1. עוברים לכתובת chrome.google.com/sync.
  2. בתחתית המסך, בוחרים באפשרות ניקוי נתונים.
  3. במכשיר, מפעילים את הסנכרון ב-Chrome.

במקרה של כניסה שנכשלה: 8: שגיאה פנימית לא ידועה.

יכול להיות שהמכשיר לא הוגדר כמו שצריך עם חשבון Google. יכול להיות שיש בעיה באופן שבו נוצר ה-JSON של מפתח הגישה. בודקים היטב את ההטמעה כדי לוודא שהיא מדויקת.

לא ניתן לאחזר את חשבון הסנכרון

בגרסה 24.40.XX ואילך של Google Play Services, קודי השגיאה יהיו אינפורמטיביים יותר. לדוגמה, במקום ההודעה "לא הצלחנו לקבל את חשבון הסנכרון", המתקשרים יקבלו עכשיו הודעת שגיאה על ביטול.