שגיאות הרשאה

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

פתרון בעיות

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

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

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

הגישה נדחתה

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

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

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

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

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

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

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

לקוח לא חוקי

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

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

אחרי שנותנים הרשאות ב-PCM, יכול להיות שתופיע השגיאה 'בקשה לא חוקית' עם ההודעה 'חסר פרמטר נדרש: היקף'. חשוב לוודא שהערך 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 לנקודת הקצה של Google OAuth, ומחליפים את:

  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

מכשירים

מידע נוסף זמין במאמר בנושא devices.list הפניית API.

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 לנקודת הקצה של Google OAuth, ומחליפים את:

  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"
}