שגיאות הרשאה

במהלך תהליך ההרשאה, יכול להיות ש-Google OAuth תחזיר שגיאה. במדריך הזה מוסבר איך לפתור את השגיאות הנפוצות ביותר במהלך התהליך.

פתרון בעיות

מידע נוסף על Google OAuth זמין במאמר שימוש ב-OAuth 2.0 כדי לגשת ל-Google APIs.

התוקף של טוקן הרענון פג שוב ושוב

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

הגישה נדחתה

אם הגדרתם את מסך ההסכמה של OAuth ב-Google Cloud וסוג המשתמש מוגדר כחיצוני, תופיע הודעת השגיאה 'Access denied' (הרשאת הגישה נדחתה) אם תנסו לקשר חשבון עם חשבון Google שלא מופיע כמשתמש לבדיקה באפליקציה. חשוב להוסיף את חשבון Google לקטע משתמשים לבדיקה במסך ההסכמה של OAuth.

שגיאה ב-Partner Connections Manager‏ (PCM)

לקבלת עזרה לגבי שגיאות שנתקלת בהן בזמן הגישה ל-PCM, אפשר לעיין בחומר העזר בנושא שגיאות ב-Partner Connections Manager‏ (PCM).

Google לא אימתה את האפליקציה הזו

ממשק ה-API של SDM משתמש בהיקף מוגבל, כלומר כל אפליקציה שמשתמשת בהיקף הזה במהלך ההרשאה תהיה 'לא מאומתת', אלא אם תשלימו את אימות ה-API של OAuth. כשמשתמשים ב- Device Access לשימוש אישי, לא נדרש אימות OAuth API.

יכול להיות שיופיע המסך 'Google לא אימתה את האפליקציה הזו' במהלך תהליך ההרשאה. המסך הזה מופיע אם ההיקף sdm.service לא מוגדר במסך ההסכמה ל-OAuth ב-Google Cloud. כדי לעקוף את המסך הזה, לוחצים על האפשרות Advanced ואז על Go to Project Name (unsafe).

מידע נוסף זמין במאמר מסך של אפליקציה לא מאומתת.

לקוח לא חוקי

אם תספקו סוד לקוח שגוי של OAuth 2.0, תופיע השגיאה 'לקוח לא חוקי' כשתנסו לקבל אסימון גישה או אסימון רענון. חשוב לוודא שהערך של client_secret שבו אתם משתמשים בקריאות לאסימוני הגישה ולאסימוני הרענון הוא הערך של מזהה הלקוח ב-OAuth 2.0 שבו אתם משתמשים, כפי שמופיע בדף פרטי הכניסה ל-Google Cloud.

בקשה לא חוקית, חסר היקף הרשאות נדרש

אחרי שמעניקים הרשאות ב-PCM, יכול להיות שתקבלו את השגיאה 'בקשה לא חוקית' עם הכיתוב 'חסר הפרמטר הנדרש: scope'. חשוב לוודא שהערך של scope שבו אתם משתמשים בקריאות ההרשאה זהה לערך שהגדרתם ללקוח OAuth 2.0, כפי שמופיע בדף פרטי הכניסה ל-Google Cloud.

חוסר התאמה ב-URI של ההפניה האוטומטית

במהלך תהליך ההרשאה, יכול להיות שתקבלו את השגיאה 'התרחשה אי-התאמה של ה-URI להפניה אוטומטית'. חשוב לוודא שהערך של redirect_uri שבו אתם משתמשים בקריאות ההרשאה זהה לערך שהגדרתם ללקוח OAuth 2.0, כפי שמופיע בדף פרטי הכניסה ל-Google Cloud.

הסבר מהיר

במאמר הזה מוסבר איך להעניק הרשאה לuser ולקשר את חשבון Google שלו במהירות.

כדי להשתמש במסמך העזרה המהיר הזה, עורכים כל משתנה placeholder בדוגמאות הקוד עם הערכים של השילוב הספציפי שלכם, ומעתיקים ומדביקים לפי הצורך:

1 PCM

מפנים את user לקישור PCM באפליקציה, ומחליפים את:

  1. project-id עם Device Access Project תעודה המזהה
  2. oauth2-client-id עם מזהה הלקוח ב-OAuth2 מפרטי הכניסה ל-Google Cloud
  3. redirect-uri עם URI להפניה אוטומטית שצוין למזהה הלקוח של OAuth2 שבו אתם משתמשים
  4. scope עם אחד מהיקפי הגישה הזמינים
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=redirect-uri&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/scope

2 קוד אימות

אחרי שמעניקים הרשאות דרך PCM להיקף שבחרתם, ה- user צריך להפנות לכתובת ה-URI להפניה אוטומטית שציינתם. קוד ההרשאה מוחזר כפרמטר code בכתובת ה-URL, שצריכה להיות בפורמט הזה:

redirect-uri?code=authorization-code&scope=https://www.googleapis.com/auth/scope

3 טוקן גישה

משתמשים בקוד ההרשאה כדי לאחזר אסימון גישה, שאפשר להשתמש בו כדי לבצע קריאה ל-SDM API מטעם המשתמש.

שולחים קריאת POST לנקודת הקצה של OAuth ב-Google, ומחליפים את הפרטים הבאים:

  1. oauth2-client-id ו-oauth2-client-secret עם מזהה הלקוח וסודו ב-OAuth2 מפרטי הכניסה שלכם ל-Google Cloud
  2. authorization-code בקוד שקיבלת בשלב הקודם
  3. redirect-uri עם URI להפניה אוטומטית שצוין למזהה הלקוח של OAuth2 שבו אתם משתמשים

Google OAuth מחזיר שני אסימונים, אסימון גישה ואסימון רענון.

בקשה

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&code=authorization-code&grant_type=authorization_code&redirect_uri=redirect-uri'

תשובה

{
  "access_token": "access-token",
  "expires_in": 3599,
  "refresh_token": "refresh-token",
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}

4 קריאה ל-API

ההרשאה לא תושלם עד שתבצעו קריאה ל-API עם אסימון הגישה של user. הקריאה הראשונית הזו מסיימת את תהליך ההרשאה ומפעילה את האירועים.

כדי להשלים את ההרשאה, חובה להשתמש באחת מהקריאות ל-API שמפורטות בהיקף שצוין.

sdm.service

מכשירים

מידע נוסף זמין במסמכי העזרה של API devices.list.

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

5 Refresh Token

אסימוני הגישה ל-SDM API תקפים למשך שעה אחת בלבד, כפי שמצוין בפרמטר expires_in שמוחזר על ידי Google OAuth. אם פג התוקף של אסימון הגישה, תוכלו להשתמש באסימון הרענון כדי לקבל אסימון חדש.

שולחים קריאת POST לנקודת הקצה של OAuth ב-Google, ומחליפים את הפרטים הבאים:

  1. oauth2-client-id ו-oauth2-client-secret עם מזהה הלקוח וסודו ב-OAuth2 מפרטי הכניסה שלכם ל-Google Cloud
  2. refresh-token עם הקוד שקיבלת כשקיבלת את אסימון הגישה בפעם הראשונה.

Google OAuth מחזיר אסימון גישה חדש.

בקשה

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&refresh_token=refresh-token&grant_type=refresh_token'

תשובה

{
  "access_token": "new-access-token",
  "expires_in": 3599,
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}