שגיאות עשויות להתרחש בשכבות שונות. יכול להיות שתקבלו התראות בדרכים שונות, בהתאם למיקום שבו מתרחשת השגיאה.
פרמטרים נדרשים של 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
});