מתן הרשאה לחשבון

אחרי שיוצרים את הפרויקטים ב-Google Cloud וב-Device Access, אפשר להעניק הרשאה לחשבון Google עם מכשיר Google Nest נתמך ל-SDM API.

כדי לראות מבנים ומכשירים, צריך לקשר חשבון Google Device Access פרויקט באמצעות ה-PCM. PCM מאפשר ל- user להעניק הרשאה ל- developerלגשת למבנים ולנתוני המכשירים שלהם.

במדריך הזה, אתם משמשים גם כ user וגם כ developer.

  1. פתיחת הקישור הבא באינטרנט דפדפן, מחליף את:

    1. project-id עם Device Access Project התעודה המזהה שלך
    2. oauth2-client-id מחליפים במזהה הלקוח של OAuth2 Google Cloud פרטי כניסה
    https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=https://www.google.com&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/sdm.service
    
  2. אם נכנסתם לאחרונה ל-Google עם כמה חשבונות, יכול להיות שיוצג במסך הראשוני בחירת חשבון, שבו רשימה חשבונות Google. אם כן, צריך לבחור את חשבון Google שמקושר למכשירים שלך רוצה לאשר עבור Device Access.
  3. המסך ההרשאות של Google Nest הוא ה-PCM עצמו. כאן אפשר להקצות הרשאות למבנה ולמכשיר. מעבירים את המתג למצב פעיל הרשאות לבית (שלב 1) ולכל המכשירים בבית הזה נתמך על ידי SDM API (שלב 2), ואז לוחצים על הבא.
  4. במסך Choose an account to continue to Project Name, שבו Project Name הוא שם הפרויקט ב-Google Cloud, בוחרים את חשבון Google שרוצים להעניק לו הרשאה ל-SDM API. משתמשים באותו חשבון Google כמו קודם.
  5. אחרי שבוחרים חשבון, יכול להיות שיופיע מסך אזהרה עם הכיתוב Google לא אימתה את האפליקציה הזו. במקרה כזה, כדי להמשיך, לוחצים על האפשרות מתקדם ואז על כניסה אל שם הפרויקט (לא בטוח). למידע נוסף, ראו Google לא אימתה את האפליקציה הזו.
  6. במסך הענקת שם הפרויקט הרשאה, לוחצים על אפשר כדי לתת הרשאת גישה לפרויקט לחשבון Google.
  7. במסך אישור הבחירות שלך, מוודאים שההרשאות הרצויות. כדי להעניק מסומנת, ולוחצים על אישור כדי לאשר.
  8. עליך להפנות אותך אל https://www.google.com. קוד ההרשאה מוחזר כפרמטר code בכתובת ה-URL, שאמור להיות בפורמט הזה:

    https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
    
  9. מעתיקים את קוד ההרשאה.

קבלת אסימון גישה

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

  1. פתיחת טרמינל והפעלה הפקודה הבאה curl מחליפה את:

    1. oauth2-client-id ו-oauth2-client-secret עם מזהה הלקוח והסוד של הלקוח ב-OAuth2 מפרטי הכניסה ל-Google Cloud
    2. authorization-code בקוד שקיבלת בשלב הקודם
    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=https://www.google.com'
    
  2. פרוטוקול OAuth של Google מחזיר שני אסימונים, אסימון גישה אסימון הרענון.

    {
      "access_token": "access-token",
      "expires_in": 3599,
      "refresh_token": "refresh-token",
      "scope": "https://www.googleapis.com/auth/sdm.service",
      "token_type": "Bearer"
    }
    מעתיקים את שני הערכים האלה. אסימון הגישה משמש כדי לקרוא ל ממשק API של SDM ואסימון הרענון משמשים לקבלת אסימון גישה.

ביצוע קריאה לרשימת המכשירים

תהליך ההרשאה לא יושלם עד לביצוע הראשון שלך devices.list באמצעות אסימון הגישה החדש. הזה הקריאה הראשונית מסיימת את תהליך ההרשאה ומתאפשרת אירועים אם כבר הגדרת מינוי Pub/Sub.

כדי לבצע את הקריאה הזו לנקודת הקצה devices, צריך להשתמש ב-curl:

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

שיחה שבוצעה בהצלחה תחזיר רשימה של המכשירים המקושרים אל Device Access פרויקט. לכל מכשיר יש רשימה ייחודית משלו של המאפיינים הזמינים:

{
  "devices": [
    {
      "name": "enterprises/project-id/devices/device-id",
      "type": "sdm.devices.types.device-type",
      "traits": { ... },
      "parentRelations": [
        {
          "parent": "enterprises/project-id/structures/structure-id/rooms/room-id",
          "displayName": "device-room-name"
        }
      ]
    }
  ]
}

איך משתמשים באסימון רענון

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

הפקודה דומה לפקודה של אסימון הגישה, אלא שמשתמשים ב-grant_type שונה.

  1. פותחים טרמינל ומריצים את הפקודה הבאה של curl, תוך החלפה של:

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

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

פתרון בעיות

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

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

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

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

לקוח לא חוקי

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

שינוי הרשאות החשבון

כדי לשנות את ההרשאות שהוענקו Device Access לפרויקט או לבטל את הקישור שלו לגמרי עוברים אל PCM:

https://nestservices.google.com/partnerconnections

בדף הזה מוצגים כל השירותים למפתחים של צדדים שלישיים (Device Access פרויקטים) שמקושרות לחשבון שלכם. בוחרים את Device Access הפרויקט שרוצים לשנות. במסך הבא משנים את ההרשאות לפי הצורך.

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

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

אם השירות הרצוי לא מופיע ב-PCM, יכול להיות שתצטרכו לבצע קריאה לרשימה של המכשירים.

הסבר קצר

היעזרו בחומר העזר הזה כדי ליישם במהירות את השלבים לאישור user ולקשר את חשבון Google שלו הקצר הזה. התשובות שלך יעזרו לנו להשתפר.

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

1 PCM

פתיחת הקישור הבא באינטרנט דפדפן, מחליף את:

  1. project-id עם המזהה Device Access Project שלך
  2. oauth2-client-id עם מזהה הלקוח ב-OAuth2 מפרטי הכניסה ל-Google Cloud
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=https://www.google.com&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/sdm.service

2 קוד אימות

עליך להפנות אותך אל https://www.google.com. קוד ההרשאה מוחזר כפרמטר code בכתובת ה-URL, שאמור להיות בפורמט הזה:

https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service

3 אסימון גישה

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

פתיחת טרמינל והפעלה הפקודה הבאה curl מחליפה את:

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

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

בקשה

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=https://www.google.com'

תשובה

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

4 קריאה ל-API

תהליך ההרשאה לא יושלם עד לביצוע הראשון שלך devices.list באמצעות אסימון הגישה החדש. השיחה הראשונית הזו מסיימת את תהליך ההרשאה ומפעילה אירועים אם כבר הגדרתם מינוי ל-Pub/Sub.

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

פותחים טרמינל ומריצים את הפקודה הבאה של curl, תוך החלפה של:

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

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

בקשה

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/sdm.service",
  "token_type": "Bearer"
}