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