שליחת הקריאה הראשונה ל-Google Health API

1. מבוא

בעזרת Visual Studio Code‏ (VS Code) והתוסף Rest Client של Huachao Mao, אפשר לבדוק את תהליך ההסכמה ל-OAuth של Google ואת Google Health API. ב-Codelab הזה נסביר איך להגדיר את התוסף Rest Client, איך להתחיל את תהליך ההרשאה ואיך לבצע את הקריאה הראשונה לאחת מנקודות הקצה של Google Health API. לאחר מכן, תוכלו לקרוא את מאמרי העזרה של Rest Client ואת מאמרי העזרה של Fitbit כדי ליצור את נקודות הקצה האחרות בפרויקט ה-HTTP שלכם.

אם אתם לא רוצים להשתמש ב-VS Code וב-Rest Client, אפשר לבצע את הקריאות ל-API באמצעות פקודות curl.

מה תלמדו

  • איך מגדירים את VS Code עם תוסף לקוח Rest.
  • איך מגדירים מזהה לקוח במסוף Google Cloud.
  • איך עוברים את תהליך ההרשאה של Google OAuth 2.0 כדי לקבל טוקן גישה וטוקן רענון.
  • איך שולחים קריאות לנקודות הקצה של Google Health API באמצעות לקוח REST.

הדרישות

כדי להגדיר את האפליקציה לנייד של Fitbit:

  1. מחפשים את האפליקציה לנייד של Fitbit ב-App Store של Apple או בחנות Google Play ומורידים אותה.
  2. לוחצים על סמל האפליקציה.
  3. לוחצים על כניסה באמצעות חשבון Google.
  4. בוחרים את חשבון Google ולוחצים על הלחצן המשך.

כדי להתקין את הכלים של Visual Studio:

  1. מורידים את VS Code. בדרך כלל, ההורדה מכילה את קובץ ההפעלה.
  2. מפעילים את VS Code.
  3. מתקינים את התוסף Rest Client של Huachao Mao.
    • לוחצים על סמל התוסף תוסף בצד ימין של סביבת הפיתוח המשולבת.
    • מחפשים את REST Client by Huachao Mao ולוחצים על Install (התקנה).

2. הגדרת פרויקט ב-Google Cloud

תשתמשו במסוף Google Cloud כדי ליצור מזהה לקוח ולאפשר שימוש ב-Google Health API.

  1. נכנסים למסוף Google Cloud.
  2. כדי ליצור פרויקט חדש:
    1. לוחצים על Select a project (בחירת פרויקט) בכלי לבחירת פרויקטים.
    2. בפינה השמאלית העליונה, לוחצים על פרויקט חדש.
    3. מזינים את שם הפרויקט.
    4. מזינים את המיקום (לדוגמה, 'אין ארגון').
    5. לוחצים על הלחצן יצירה.
    6. בוחרים את הפרויקט הרצוי.

הפעלת Google Health API

  1. בפינה הימנית העליונה, לוחצים על סמל התפריט:תפריט
  2. בוחרים באפשרות APIs & Services > Library.
  3. מחפשים את Google Health API ומפעילים אותו.

הגדרת פרטי הכניסה של OAuth

אם אתם לא במסוף Google Cloud, נכנסים אל מסוף Google Cloud.

  1. בפינה הימנית העליונה, לוחצים על סמל התפריט:תפריט
  2. בוחרים באפשרות APIs & Services > Credentials (ממשקי API ושירותים > פרטי כניסה).
  3. במרכז החלק העליון, לוחצים על + Create Credentials > OAuth client ID (יצירת פרטי כניסה > מזהה לקוח OAuth).
  4. לוחצים על הלחצן הגדרת מסך ההסכמה. אם מופיעה ההודעה 'Google Auth Platform not configured yet', לוחצים על הלחצן Get Started.
  5. בקטע 1:
    1. מזינים את שם האפליקציה.
    2. מזינים את כתובת האימייל לתמיכה במשתמשים.
    3. לוחצים על הלחצן הבא.
  6. בסעיף 2:
    1. בוחרים באפשרות חיצוני.
    2. לוחצים על הלחצן הבא.
  7. בקטע 3:
    1. מזינים את כתובת האימייל בשדה פרטים ליצירת קשר.
    2. לוחצים על הלחצן הבא.
  8. בקטע 4:
    1. מסמנים את תיבת הסימון כדי להביע הסכמה למדיניות של Google בנושא נתוני משתמשים בשירותי API.
    2. לוחצים על הלחצן יצירה.
  9. בקטע 'מדדים', לוחצים על הכפתור יצירת לקוח OAuth.
  10. בוחרים את סוג האפליקציה Web Application.
  11. מזינים את השם של מזהה הלקוח.
  12. משאירים את השדה מקורות מורשים של JavaScript ריק.
  13. בקטע כתובות URI מורשות להפניה אוטומטית, לוחצים על הלחצן + הוספת URI. מזינים את כתובת ה-URI להפניה אוטומטית: https://www.google.com.
  14. לוחצים על הלחצן יצירה.
  15. במסוף Google תוצג הודעה שמזהה הלקוח נוצר. לוחצים על הקישור Download JSON כדי להוריד את מזהה הלקוח ואת סוד הלקוח, או רושמים את הערכים. לא תהיה אפשרות לשחזר את הסוד של הלקוח לאחר מכן.
  16. לוחצים על אישור. תחזרו לדף 'מזהי לקוחות ב-OAuth 2.0'.
  17. מזהה הלקוח יתווסף לפרויקט. כדי לראות את הפרטים, לוחצים על כתובת ה-URL של מזהה הלקוח.

הוספת משתמשי בדיקה

  1. בחלונית הימנית, בוחרים באפשרות קהל. הסטטוס 'סטטוס הפרסום' צריך להיות בדיקה, והסטטוס 'סוג המשתמש' צריך להיות חיצוני.
  2. בקטע 'משתמשי בדיקה', לוחצים על הלחצן + הוספת משתמשים. מזינים את כתובת האימייל של כל משתמש שרוצים לאחזר את הנתונים שלו.
  3. לוחצים על הלחצן שמירה.

הוספת היקפי הרשאות למזהה הלקוח

  1. בחלונית הימנית, בוחרים באפשרות גישה לנתונים.
  2. לוחצים על הלחצן הוספה או הסרה של היקפי הרשאות.
  3. בעמודה API, מחפשים את Google Health API. ב-codelab הזה אנחנו משתמשים בהיקף ההרשאות .../auth/googlehealth.activity_and_fitness.readonly
  4. אחרי שבוחרים את ההיקף, לוחצים על הלחצן עדכון כדי לחזור לדף 'גישה לנתונים'.
  5. לוחצים על הלחצן שמירה.

סיימת להגדיר את מזהה הלקוח.

3. יצירת תהליך ההרשאה

  1. פותחים את אפליקציית VS Code במחשב.
  2. במסך הפתיחה, בוחרים באפשרות פתיחה.
  3. בוחרים תיקייה ליצירת הפרויקט ולוחצים על Open. המסך שלכם אמור להיראות בערך כמו בדוגמה הזו, עם שם התיקייה או הפרויקט בסייר.VSC
  4. בתפריט הראשי, בוחרים באפשרות קובץ -> קובץ טקסט חדש.
  5. שומרים את הקובץ כדי לתת לו שם. בתפריט הראשי, בוחרים באפשרות קובץ -> שמירה בשם -> Codelab.http. הפעולה הזו אמורה להוסיף את הקובץ לפרויקט. הסיומת של הקובץ צריכה להיות ‎ .http או ‎ .rest. ב-codelab הזה נשתמש ב-‎ .http.

במהלך הפרויקט הזה, נשתמש בכמה ערכים כמה פעמים. הערכים האלה הם:

client_id

הערך של מזהה הלקוח ממסוף Google.

secret

ערך הסוד של הלקוח ממסוף Google.

redirect_uri

נקודת קצה באפליקציה שמבצעת עיבוד של קוד ההרשאה. ב-codelab הזה נשתמש בכתובת https://www.google.com

access_token

אסימון הגישה שנוצר עבור המשתמש אחרי שתהליך ההסכמה מסתיים.

refresh_token

אסימון הרענון שנוצר עבור המשתמש אחרי שתהליך מתן ההסכמה הסתיים.

מוסיפים את הקוד הבא שמגדיר את המשתנים שמשמשים בפרויקט הזה. הם אמורים להיות בחלק העליון של קובץ ה-Codelab.http. ממלאים את הערכים של client_id ו-secret.

### File Variables for the Codelab
@client_id =
@secret =
@redirect_uri = https://www.google.com
@accessToken={{user.response.body.access_token}}
@refreshToken={{user.response.body.refresh_token}}

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

נקודת הקצה של Google OAuth 2.0 נמצאת בכתובת https://accounts.google.com/o/oauth2/v2/auth. אפשר לגשת לנקודת הקצה הזו רק באמצעות HTTPS. חיבורי HTTP רגילים נדחים.

שרת ההרשאות של Google תומך בהרבה פרמטרים של מחרוזת שאילתה לאפליקציות של שרת אינטרנט, כדי להתאים אישית את תהליך ההרשאה. נשתמש בפרמטרים הבאים של שאילתה שהם חובה: client_id, redirect_uri, response_type ו-scope. במסמכי התיעוד מופיעה רשימה של כל פרמטרים של שאילתה והתיאור שלהם.

הערכים של פרמטרים של שאילתה הם

client_id

הערך של מזהה הלקוח מ-Google Console

redirect_uri

נקודת קצה באפליקציה שמבצעת עיבוד של קוד ההרשאה. במהלך ה-codelab, משתמשים בכתובת https://www.google.com

response_type

code (ערך נתמך לאפליקציות אינטרנט)

scope

ההיקפים מגיעים מ-Google Console עם התחביר https://www.googleapis.com ואחריו שם ההיקף. לדוגמה, https://www.googleapis.com/auth/googlehealth.activity_and_fitness.

כדי לבקש כמה היקפי הרשאה, צריך לכלול את כל היקפי ההרשאה בפרמטר scope, ולהפריד ביניהם באמצעות רווחים (לדוגמה, scope1 scope2 scope3). כשמציינים את הפרמטר כחלק מכתובת ה-URL, צריך להשתמש בקידוד URL לרווחים (לדוגמה, ‎%20).

אחרי המשתנים, כותבים את כתובת ה-URL של ההרשאה כמו שמופיע כאן. אי אפשר להשתמש בפרמטרים שמוגדרים בחלק העליון של הפרויקט במחרוזת ההרשאה. לכן, צריך לכלול את הערכים של client_id ושל redirect_uri. מחליפים את המחרוזת client-id במזהה הלקוח.

### Google Health API Rest Client Example

### Authorization String
https://accounts.google.com/o/oauth2/v2/auth?client_id=client-id&redirect_uri=https://www.google.com&response_type=code&access_type=offline&scope=https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly

כשמשתמש מביע הסכמה, Google מספקת קוד הרשאה שמוחלף באסימון גישה באמצעות קריאה לנקודת הקצה של Google לאסימונים. מוסיפים את ההגדרה הבאה לקריאה לנקודת הקצה של הטוקן אל Codelab.http מתחת למחרוזת ההרשאה. בשלב הבא תחליפו את authorization-code בקוד הרשאה.

### AUTHORIZATION ENDPOINTS
######################################################################
# @name user
POST https://oauth2.googleapis.com/token
Content-Type: application/x-www-form-urlencoded

code=authorization-code&client_id={{clientId}}&client_secret={{secret}}&redirect_uri={{redirect_uri}}&grant_type=authorization_code

@name user מתייחס למשתמש הנוכחי שלנתונים שלו יש לכם גישה.

4. איך מאשרים חשבון ומקבלים טוקנים

עכשיו נסביר על תהליך ההרשאה לקבלת טוקנים של הרשאה.

מחרוזת ההרשאה ב-Codelab.http משמשת להפעלת תהליך קבלת ההסכמה של Google בדפדפן. יכול להיות שתוסף Rest Client יציג קישור Send Request (שליחת בקשה) לכתובת ה-URL הזו. לא להשתמש באפשרות שליחת בקשה עבור כתובת ה-URL הספציפית הזו. במקום זאת, מעתיקים ומדביקים אותו בדפדפן, או משתמשים ב-Ctrl+Click (Windows/Linux) או ב-Cmd+Click (Mac) ב-VS Code כדי לפתוח אותו בדפדפן ברירת המחדל.

https://accounts.google.com/o/oauth2/v2/auth?client_id=client-id&redirect_uri=https://www.google.com&response_type=code&access_type=offline&scope=https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly
  1. תוצג בקשה להיכנס לחשבון Google. צריך להיכנס באמצעות אחד מחשבונות למטרות בדיקה שהגדרתם בקטע הוספת משתמשים לבדיקה.
  2. יכול להיות שתוצג לכם הודעה שהאפליקציה לא אומתה. הסיבה לכך היא שהאפליקציה לא פורסמה. לוחצים על 'המשך'.

צילום מסך שבו מוצגת האזהרה לגבי אפליקציה לא מאומתת.

  1. בדף ההסכמה מפורטים היקפי ההרשאות המבוקשים. המשתמש יכול לבחור את ההיקפים שהוא רוצה לשתף עם האפליקציה הזו. לוחצים על 'המשך'.

אחרי שתאשרו את השיתוף של ההיקפים המבוקשים, תועברו אל redirect_uri שציינתם (ב-codelab הזה, https://www.google.com). אפליקציית Google מוסיפה קוד הרשאה ופרמטרים אחרים ל-redirect_uri, כך שכתובת ה-URL בסרגל הכתובות של הדפדפן אמורה להיראות בערך כך:

https://www.google.com/?code=4/0Ab32j93oyGWqaXE112sP1IKmh3kV1fE4tcHIMXYJQYWgNEtAa_0-YsfkS9Ekj3Be89u3fw&scope=https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly

קוד ההרשאה הוא הערך האלפאנומרי שמופיע בין 'code=' לבין '&scope'. בדוגמה שלמעלה, הערך הוא:

4/0Ab32j93oyGWqaXE112sP1IKmh3kV1fE4tcHIMXYJQYWgNEtAa_0-YsfkS9Ekj3Be89u3fw

באפליקציה שמוכנה להפצה, השרת ינתח את הנתונים האלה מפרמטרים של כתובת ה-URL. ב-codelab הזה, מעתיקים את קוד ההרשאה מכתובת ה-URL בדפדפן.

עכשיו, מחליפים את קוד ההרשאה הזה ב-access_token וב-refresh_token. ב-Codelab.http, מחליפים את authorization-code בגוף הבקשה של POST /token בקוד ההרשאה שהעתקתם.

POST https://oauth2.googleapis.com/token
Content-Type: application/x-www-form-urlencoded

code=authorization-code&client_id={{client_id}}&client_secret={{secret}}&redirect_uri={{redirect_uri}}&grant_type=authorization_code

לוחצים על הקישור שליחת בקשה ממש מעל השורה POST https://oauth2.googleapis.com/token.

התגובה אמורה להיראות כך:

{
  "access_token": "ya29.a0ATi6K2uasci7FyyIClNLtQou6z...",
  "expires_in": 3599,
  "refresh_token": "1//05EuqYpEXjJCHCgYIA...",
  "scope": "https://www.googleapis.com/auth/googlehealth.activity_and_fitness",
  "token_type": "Bearer",
  "refresh_token_expires_in": 604799
}

כשמקבלים את התגובה הזו, Rest Client מאכלס אוטומטית את המשתנים @accessToken ו-@refreshToken שמוגדרים בחלק העליון של Codelab.http לשימוש בבקשות הבאות.

מידע על אסימוני רענון

כשמחליפים את קוד ההרשאה, התשובה עשויה לכלול refresh_token בנוסף ל-access_token. access_tokens הם קצרי-חיים (בדרך כלל שעה אחת). כשפג התוקף של access_token, צריך להשתמש ב-refresh_token כדי לקבל access_token חדש בלי שהמשתמש יידרש להיכנס לחשבון או להביע הסכמה שוב. הפעולה הזו אפשרית כי כללנו את access_type=offline בבקשת ההרשאה שלנו.

אם לא קיבלתם refresh_token בתשובה, יכול להיות שכבר הענקתם הסכמה לאפליקציה ולהרשאות האלה. בדרך כלל, טוקנים לרענון מונפקים רק בפעם הראשונה שמשתמש נותן הסכמה לאפליקציה שלכם, או כשמוסיפים את prompt=consent לכתובת ה-URL של ההרשאה כדי לאלץ את מסך ההסכמה להופיע גם בהרשאות הבאות.

תוקף ה-refresh_token הוא ארוך, אבל הוא יכול לפוג או להיות לא תקף אם לא משתמשים בו במשך 6 חודשים, אם המשתמש מבטל את הגישה לאפליקציה או מסיבות אחרות. מומלץ לשמור את refresh_token באופן מאובטח לשימוש עתידי.

מידע נוסף מופיע במאמר בנושא רענון של אסימון גישה (גישה במצב אופליין).

5. הוספת נתונים לאפליקציה לנייד של Fitbit

אם אתם משתמשים חדשים ב-Fitbit, יכול להיות שאין לכם נתונים בחשבון Fitbit שאפשר לשלוח לגביהם שאילתות. אנחנו נוסיף ידנית יומן אימונים שאפשר לשלוח לו שאילתות דרך אחת מנקודות הקצה. כדי לתעד אימון באופן ידני:

  1. פותחים את האפליקציה לנייד של Fitbit במכשיר. אם צריך, נכנסים לחשבון Fitbit.
  2. בפינה השמאלית התחתונה של המסך, מקישים על לחצן הפלוס.
  3. בקטע 'רישום ידני', מקישים על פעילות.
  4. מחפשים את סוג הפעילות הגופנית הליכה ובוחרים אותה.
  5. מזינים שעת התחלה להיום.
  6. משנים את משך הזמן ל15 דקות.
  7. משאירים את המרחק 1.6 ק"מ.
  8. מקישים על הוספה.
  9. כדי לסנכרן את האפליקציה לנייד עם השרתים של Fitbit, לוחצים לחיצה ארוכה על המסך ומחליקים אותו כלפי מטה. כשמרימים את האצבע, האפליקציה לנייד אמורה להסתנכרן.
  10. בקטע 'פעילות' אמורה להופיע רשומת ההליכה שהזנתם באופן ידני.צילום מסך שמראה פעילות של הליכה.

6. אחזור נתונים באמצעות השיטה list

כדי להתקשר לשיטת list, מוסיפים את הקוד הבא ל-Codelab.http, ממש מתחת לנקודת הקצה /token.

### users.dataTypes.dataPoints
#####################################################

### LIST exercise
GET https://health.googleapis.com/v4/users/me/dataTypes/exercise/dataPoints
Authorization: Bearer {{accessToken}}
Accept: application/json

הקוד הזה קורא לנקודת הקצה list כדי להציג את הצעדים שהמשתמש תיעד בחשבון Fitbit שלו. ספירת הצעדים בכל דקה תוחזר בתגובה, בדומה לנקודת הקצה Activity Intraday ב-Fitbit Web API v1.

כדי להפעיל את הקריאה, לוחצים על הקישור Send Request (שליחת בקשה) לנקודת הקצה GET. התגובה אמורה להיראות כך:

{
  "dataPoints": [
    {
      "name": "users/2515055256096816351/dataTypes/exercise/dataPoints/8896720705097069096",
      "dataSource": {
        "recordingMethod": "MANUAL",
        "platform": "FITBIT"
      },
      "exercise": {
        "interval": {
          "startTime": "2026-02-23T13:10:00Z",
          "startUtcOffset": "-18000s",
          "endTime": "2026-02-23T13:25:00Z",
          "endUtcOffset": "-18000s"
        },
        "exerciseType": "WALKING",
        "metricsSummary": {
          "caloriesKcal": 16,
          "distanceMillimiters": 1609344,
          "steps": "2038",
          "averagePaceSecondsPerMeter": 0.55923407301360051,
          "activeZoneMinutes": "0"
        },
        "exerciseMetadata": {},
        "displayName": "Walk",
        "activeDuration": "900s",
        "exerciseEvents": [
          {
            "eventTime": "2026-02-23T13:10:00Z",
            "eventUtcOffset": "-18000s",
            "exerciseEventType": "START"
          },
          {
            "eventTime": "2026-02-23T13:25:00Z",
            "eventUtcOffset": "-18000s",
            "exerciseEventType": "STOP"
          }
        ],
        "updateTime": "2026-02-24T01:19:22.450466Z"
      }
    },
    {
      "name": "users/2515055256096816351/dataTypes/exercise/dataPoints/5870930690409355408",
      "dataSource": {
        "recordingMethod": "MANUAL",
        "platform": "FITBIT"
      },
      "exercise": {
        "interval": {
          "startTime": "2026-02-23T06:00:00Z",
          "startUtcOffset": "-18000s",
          "endTime": "2026-02-23T06:15:00Z",
          "endUtcOffset": "-18000s"
        },
        "exerciseType": "WALKING",
        "metricsSummary": {
          "caloriesKcal": 17,
          "distanceMillimiters": 1609344,
          "steps": "2038",
          "averagePaceSecondsPerMeter": 0.55923407301360051,
          "averageHeartRateBeatsPerMinute": "81",
          "activeZoneMinutes": "0",
          "heartRateZoneDurations": {
            "lightTime": "900s"
          }
        },
        "exerciseMetadata": {},
        "displayName": "Walk",
        "activeDuration": "900s",
        "exerciseEvents": [
          {
            "eventTime": "2026-02-23T06:00:00Z",
            "eventUtcOffset": "-18000s",
            "exerciseEventType": "START"
          },
          {
            "eventTime": "2026-02-23T06:15:00Z",
            "eventUtcOffset": "-18000s",
            "exerciseEventType": "STOP"
          }
        ],
        "updateTime": "2026-02-23T08:29:39.480437Z"
      }
    }
  ],
  "nextPageToken": ""
}

הרבה נקודות קצה תומכות בפרמטרים של שאילתות לסינון או לעימוד. לדוגמה, פעילות גופנית תומכת במסנן interval.civil_start_time. מוסיפים את הבקשה הבאה ל-Codelab.http כדי לקבל רשימה של תרגילים בטווח זמן מסוים:

### LIST exercise >= civil start time
GET https://health.googleapis.com/v4/users/me/dataTypes/exercise/dataPoints?filter=exercise.interval.civil_start_time >= "2026-02-22T00:00:00"
Authorization: Bearer {{accessToken}}
Accept: application/json

7. מזל טוב

מעולה!

סיימתם את ה-codelab הבסיסי ולמדתם איך להשתמש ב-Visual Studio Code ובתוסף Rest Client כדי לבדוק הרשאה באמצעות OAuth 2.0 ולבצע קריאות לנקודות הקצה של Google Health API. מכאן אפשר להוסיף את נקודות הקצה הנוספות בדיוק כמו שעשיתם בתחילת הקטע אחזור נתונים באמצעות השיטה List.

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