שגיאות יכולות להתרחש בשכבות שונות. יכול להיות שתקבלו התראות בדרכים שונות, בהתאם למיקום שבו מתרחשת השגיאה.
פרמטרים נדרשים של OAuth חסרים
אם תשכחו להגדיר את הפרמטרים הנדרשים של OAuth, כמו client_id או scope, תוצג הודעת שגיאה כמו זו שבהמשך במסוף JavaScript של הדפדפן.
תיקון שגיאות בהגדרת OAuth
יכול להיות שתצטרכו לבצע שינויים במסוף Google APIs כדי לפתור חלק מהשגיאות.
- יוצרים מזהה לקוח, אם הוא עדיין לא נוצר.
- כדי לשפר את חוויית המשתמש בחלונות קופצים, מוסיפים את כל הדומיינים שעשויים להפעיל את התהליך הנוכחי ל-
Authorized JavaScript origins
. - כדי לשפר את חוויית המשתמש של ההפניה האוטומטית, מוסיפים את כל כתובות ה-URL שעשויות לקבל תשובות לאישור אל
Authorized redirect URIs
. - להגדיר כראוי את מסך ההסכמה של OAuth.
- אם צריך, שולחים את האפליקציה לאימות.
- יכול להיות שתצטרכו לבצע פעולות נוספות כדי לעמוד בדרישות של מדיניות OAuth 2.0 של Google.
ערכים לא חוקיים של פרמטרים של OAuth
אם תגדירו ערכים לא חוקיים לפרמטר של OAuth, כמו מזהי היקף, מזהי הלקוח או ערכי סוג התגובה, יוצג דף השגיאה של OAuth.
תגובות שגיאה של OAuth
יכול להיות ש-OAuth יחזיר הודעת שגיאה. במקרה כזה, הפונקציה callback
תופעל עם הודעת השגיאה כפרמטר. בהמשך מופיעה דוגמה לתשובת שגיאה של OAuth.
{ "error":"access_denied" }
בהמשך מפורטות כמה דוגמאות.
- המשתמש דוחה את בקשת ה-OAuth.
- בבקשת OAuth עם הפרמטר
prompt=none
, המשתמש עדיין לא מאומת ולא הגדיר מראש הסכמה להיקפי הגישה המבוקשים.
בדוגמה הבאה מוסבר איך לטפל בתגובות ה-OAuth של הצלחה ושגיאה.
function myCallback(response) {
if (response.error) {
// Handle error response
... ...
} else if (response.code) {
// Handle success code response
... ...
}
}
שגיאות שאינן של OAuth
OAuth לא מגדיר את ההתנהגויות במקרים הבאים:
- החלון הקופץ לא נפתח.
- חלון הקופץ נסגר לפני שהתשובות של OAuth מוחזרות.
הספרייה הזו מתעדת את השגיאות האלה ומפעילה את האירוע error_callback
אם הוא מוגדר. חשוב לבדוק את סוג השגיאה, כמו שמתואר בהמשך. אחרת, לוגיקה הקוד שלכם עשויה להיות מושפעת כשהספרייה תתמוך בסוגי שגיאות חדשים בהמשך.
function myErrorCallback(err) {
if (err.type == 'popup_failed_to_open') {
// The popup window is failed to open
... ...
} else if (err.type == 'popup_closed') {
// The popup window is closed before an OAuth response is returned
... ...
}
}
const client = google.accounts.oauth2.initCodeClient({
client_id: 'YOUR_GOOGLE_CLIENT_ID',
scope: 'https://www.googleapis.com/auth/calendar.readonly',
ux_mode: 'popup',
callback: myCallback,
error_callback: myErrorCallback
});