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

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

כדי לראות מבנים ומכשירים, צריך לקשר חשבון 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. במסך בחירת חשבון להמשך אל שם הפרויקט, שבו Project Name הוא שם הפרויקט ב-Google Cloud. בוחרים את האפשרות חשבון Google שברצונך להעניק לו הרשאה ממשק API של SDM. עליך להשתמש באותו חשבון 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. מעתיקים את קוד ההרשאה.

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

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

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

    {
      "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 ממשקי API.

התוקף של אסימון הרענון נשאר בתוקף

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

הגישה נדחתה

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

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

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

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

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

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