שגיאות הרשאה

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

פתרון בעיות

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

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

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

הגישה נדחתה

אם הגדרתם את מסך ההסכמה לשימוש ב-OAuth ב-Google Cloud וסוג המשתמש הוא חיצוני, אם תנסו לקשר חשבון Google לחשבון 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. כדי לעקוף את המסך הזה, לוחצים על האפשרות Advanced ואז על Go to Project Name (לא בטוח).

למידע נוסף, ראו מסך של אפליקציות לא מאומתות.

לקוח לא חוקי

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

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

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

חוסר התאמה בהפניה לכתובת URI

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

הסבר לסמלים שמופיעים בטבלה

המידע במאמר הזה יעזור לך להטמיע במהירות את השלבים לאישור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

מכשירים

למידע נוסף, אפשר לעיין בחומרי העזר 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 אסימון רענון

אסימוני הגישה ל-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"
}