שגיאות הרשאה

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

פתרון בעיות

מידע נוסף על Google OAuth מופיע במאמר בנושא שימוש ב-OAuth 2.0 לגישה ל-Google APIs.

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

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

הגישה נדחתה

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

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

כדי לקבל עזרה בשגיאות שנתקלתם בהן כשניסיתם לגשת אל PCM, אפשר לעיין בהפניה לשגיאות ב-Partner Connections Manager (PCM).

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

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

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

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

לקוח לא חוקי

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

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

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

חוסר התאמה ב-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 להיקף שבחרתם, המשתמש מועבר ל-URI להפניה אוטומטית שציינתם. user קוד ההרשאה מוחזר כפרמטר 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"
}