פורסם: 12 במאי 2026
מצב ממשק משתמש מיידי לכניסות הוא יכולת אינטרנט שנועדה לייעל את תהליכי הכניסה. התכונה הזו מאפשרת להציע למשתמשים מפתחות גישה וסיסמאות מנוהלות באופן יזום כשהם מגיעים לרגע של כניסה לחשבון, למשל כשהם לוחצים על הכפתור כניסה או על הכפתור לתשלום.
מופשט
מצב ממשק משתמש מיידי מספק מצב שבו הפעולה נכשלת במהירות אם אין אישורים זמינים באופן מקומי. ההתנהגות הזו משקפת את preferImmediatelyAvailableCredentials
ממשקי ה-API שנמצאים בפלטפורמות לנייד כמו Android ו-iOS. אם קיימים פרטי כניסה, הדפדפן מציג למשתמש תיבת דו-שיח מיידית לכניסה לחשבון. אחרת, ההבטחה נדחית בשקט, ואפשר לספק שיטות חלופיות לכניסה לחשבון, למשל טופס כניסה, בלי לפגוע בחוויית המשתמש.
החל ממאי 2026, Chrome הוא הדפדפן היחיד שתומך במצב ממשק משתמש מיידי.
בדיקת הדרישות המוקדמות
כדי להשתמש במצב ממשק משתמש מיידי, למשתמש צריכים להיות כבר אישורים שעומדים בדרישות וזמינים באופן מקומי במכשיר שלו. ב-Chrome, פרטי הכניסה האלה כוללים:
- מפתחות גישה שנשמרו אצל ספק מפתחות גישה כמו מנהל הסיסמאות של Google, Windows Hello או iCloud Keychain.
- סיסמאות שנשמרו במנהל הסיסמאות של Google.
אם לא קיימים פרטי כניסה מקומיים, ה-API דוחה את הבקשה בלי להציג את תיבת הדו-שיח של הכניסה המיידית.
זיהוי תמיכה בתכונות
לפני שמפעילים את מצב ממשק המשתמש המיידי, צריך לוודא שהדפדפן תומך ביכולת immediateGet באמצעות השיטה PublicKeyCredential.getClientCapabilities(). אם היא לא נתמכת, אפשר לחזור לשיטות כניסה קיימות, כמו טפסים של כתובת אימייל וסיסמה, אימות מספר טלפון או כניסה באמצעות חשבון ברשתות חברתיות.
async function checkImmediateAvailability() {
try {
const capabilities = await PublicKeyCredential.getClientCapabilities();
if (capabilities.immediateGet) {
console.log("Immediate UI mode is supported.");
} else {
console.log("Immediate UI mode is NOT supported.");
}
} catch (error) {
console.error("Error checking client capabilities:", error);
}
}
כדי לקבל תמיכה רחבה יותר בדפדפנים, אפשר להשתמש ב-polyfill שזמין במאגר GitHub של WebAuthn Polyfills.
בקשת פרטי כניסה
כדי להפעיל את תהליך הכניסה המיידי, קוראים לפונקציה navigator.credentials.get() עם השדה uiMode שמוגדר לערך 'immediate'.
אם תכללו את password: true בבקשה, המשתמשים יוכלו ליהנות מהחוויה הזו אם הדפדפן תומך בפרטי כניסה של סיסמאות.
// This call must follow a user gesture, like a button click
button.addEventListener('click', async (event) => {
event.preventDefault();
try {
const cred = await navigator.credentials.get({
password: true,
publicKey: {
challenge: serverGeneratedChallenge,
rpId: 'example.com'
},
uiMode: 'immediate',
});
// Handle successful sign-in
} catch (error) {
if (error.name === 'NotAllowedError') {
// Provide a fallback sign-in experience
showFallbackUI();
}
}
});
כדי לספק חוויית כניסה חלופית, צריך לטפל ב-NotAllowedError בבלוק catch.
טיפול בתהליכי כניסה
אפשר להטמיע מצב ממשק משתמש מיידי בשני תרחישים עיקריים. כאן אפשר למצוא עוד הנחיות לגבי חוויית משתמש ודוגמאות לאפליקציות שצריך להימנע מהן.
כניסה באמצעות כפתור
צריך לספק כפתור כניסה ייעודי שמציע חוויה נקייה בלי הנחיות לא צפויות.
- המשתמש לוחץ על הכפתור כניסה.
- השיחות באתר שלך
navigator.credentials.get()עםuiMode: "immediate". - הדפדפן בודק אם יש פרטי כניסה מקומיים.
- אם הדפדפן מוצא פרטי כניסה, הוא מציג מיד תיבת דו-שיח לכניסה כדי שהמשתמש יוכל לבחור חשבון.
- אם הדפדפן לא מוצא פרטי כניסה או שהמשתמש סוגר את תיבת הדו-שיח המיידית לכניסה, מוצגת השגיאה
NotAllowedError. - אם מתקבלת שגיאת
NotAllowedError, האתר ממשיך להציג את דף הכניסה הרגיל שלו.
כניסה לחשבון לפני התשלום
להציע פרטי כניסה באופן יזום לפני שהמשתמש מבצע פעולה שתהיה יעילה יותר אם הוא יבצע אימות, כמו התחלת תהליך תשלום בחנות אינטרנטית.
במסחר אלקטרוני, משתמשים אורחים לרוב בוחרים בין כניסה לחשבון קיים לבין ביצוע תשלום כאורחים. הצגת תיבת דו-שיח לכניסה מיידית יכולה לייעל את תהליך התשלום עבור לקוחות חוזרים.
- המשתמש מבצע פעולה, כמו לחיצה על הכפתור תשלום במהלך תהליך קנייה.
- השיחות באתר שלך
navigator.credentials.get()עםuiMode: "immediate". - אם יש פרטי כניסה, המשתמש בוחר אחד מהם כדי להשלים את הכניסה.
- אם אין פרטי כניסה, הדפדפן יציג שגיאה ולא יוצג מיד דו-שיח של כניסה. חוויית המשתמש לא משתנה, ואפשר להעביר את המשתמש למסך התשלום הקיים, שבו עשויות להיות אפשרויות כניסה אחרות או טופס תשלום כאורח.
בדיקה של אמצעי הפרטיות והאבטחה
הדפדפן מטמיע אמצעים חשובים להגנה על פרטיות המשתמשים:
- דרישה לתנועה של המשתמש: כדי למנוע בדיקה שקטה, צריך להפעיל את הקריאה ל-API באמצעות תנועה של המשתמש, כמו קליק. השיחה לא צורכת את ההפעלה.
- הגבלות במצב פרטי: בקשות שנשלחות במצב פרטי או בסשנים פרטיים תמיד מחזירות את השגיאה
NotAllowedError. - ללא רשימות היתרים: בקשות עם רשימה
allowCredentialsלא ריקה מחזירות שגיאהNotAllowedErrorכדי למנוע מעקב בין סשנים. - אין אפשרות לבטל באופן פרוגרמטי: אי אפשר להשתמש בפרמטר
signalכדי לסגור באופן פרוגרמטי את תיבת הדו-שיח של הכניסה המיידית.