İlk Google Health API çağrınızı yapma

1. Giriş

Visual Studio Code (VS Code) ve Huachao Mao'nun Rest Client uzantısı, Google OAuth izin akışını ve Google Health API'yi test etmenize olanak tanır. Bu codelab'de, Rest Client uzantısını nasıl ayarlayacağınız, yetkilendirme akışını nasıl başlatacağınız ve Google Health API uç noktalarından birine ilk çağrınızı nasıl yapacağınız gösterilecektir. Ardından, HTTP projenizdeki diğer uç noktaları oluşturmak için Rest Client ve Fitbit belgelerini okuyabilirsiniz.

VS Code ve Rest Client'ı kullanmak istemiyorsanız API çağrıları curl komutlarıyla yapılabilir.

Neler öğreneceksiniz?

  • VS Code'u Rest istemci uzantısıyla ayarlama
  • Google Cloud Console'da istemci kimliği oluşturma
  • Erişim jetonu ve yenileme jetonu almak için Google OAuth 2.0 yetkilendirme akışını nasıl kullanacağınız.
  • Rest istemcisini kullanarak Google Health API uç noktalarına nasıl çağrı yapılacağı.

İhtiyacınız olanlar

Fitbit mobil uygulamasını kurmak için:

  1. Apple App Store veya Google Play Store'da Fitbit mobil uygulamasını arayıp indirin.
  2. Uygulama simgesini seçin.
  3. Google ile oturum aç'ı tıklayın.
  4. Google Hesabınızı seçin ve Devam düğmesine basın.

Visual Studio araçlarını yüklemek için:

  1. VS Code'u indirin. Genellikle indirilen dosya, yürütülebilir dosyayı içerir.
  2. VS Code'u başlatın.
  3. Huachao Mao tarafından geliştirilen Rest Client uzantısını yükleyin.
    • IDE'nin sol tarafındaki uzantı simgesini süresini uzatma tıklayın.
    • REST Client by Huachao Mao'yu arayın ve Install'a (Yükle) basın.

2. Google Cloud projesi oluşturma

İstemci kimliği oluşturmak ve Google Health API'nin kullanımını etkinleştirmek için Google Cloud Console'u kullanırsınız.

  1. Google Cloud Console'da oturum açın.
  2. Yeni bir proje oluşturmak için:
    1. Proje seçme aracında Proje seç'i tıklayın.
    2. Sağ üst köşede Yeni Proje'yi seçin.
    3. Proje adınızı girin.
    4. Konumunuzu girin (örneğin, "Kuruluş yok").
    5. Oluştur düğmesini tıklayın.
    6. Projenizi seçin.

Google Health API'yi etkinleştirme

  1. Sol üst köşedeki menü simgesini tıklayın:menü
  2. API'ler ve Hizmetler > Kitaplık'ı seçin.
  3. "Google Health API"yi arayın ve etkinleştirin.

OAuth kimlik bilgilerinizi ayarlama

Google Cloud Console'da değilseniz Google Cloud Console'a gidin.

  1. Sol üst köşedeki menü simgesini tıklayın:menü
  2. API'ler ve Hizmetler > Kimlik bilgileri'ni seçin.
  3. Üst orta kısımdan + Kimlik bilgileri oluştur > OAuth istemci kimliği'ni seçin.
  4. Kullanıcı rızası ekranını yapılandır düğmesini tıklayın. "Google Auth Platform henüz yapılandırılmadı" mesajı görünürse Başlayın düğmesini tıklayın.
  5. 1. bölümde:
    1. Uygulama adını girin.
    2. Kullanıcı desteği e-posta adresini girin.
    3. İleri düğmesini tıklayın.
  6. 2. bölümde:
    1. Harici'yi seçin.
    2. İleri düğmesini tıklayın.
  7. 3. bölümde:
    1. İletişim bilgileri alanına e-posta adresinizi girin.
    2. İleri düğmesini tıklayın.
  8. 4. bölümde:
    1. Google'ın API Hizmetleri Kullanıcı Verileri Politikası'nı kabul etmek için onay kutusunu tıklayın.
    2. Oluştur düğmesini tıklayın.
  9. Metrikler bölümünde OAuth istemcisi oluştur düğmesine basın.
  10. Web Uygulaması uygulama türünü seçin.
  11. İstemci kimliği adını girin.
  12. Yetkilendirilmiş JavaScript kaynakları'nı boş bırakın.
  13. Yetkilendirilmiş yönlendirme URI'leri bölümünde + URI ekle düğmesine basın. Yönlendirme URI'niz olarak "https://www.google.com" adresini girin.
  14. Oluştur düğmesini tıklayın.
  15. Google Console, istemci kimliğinizin oluşturulduğunu belirten bir mesaj gösterir. İstemci kimliğini ve istemci gizli anahtarını indirmek için JSON'ı indir bağlantısını tıklayın veya değerleri not alın. Müşterinizin gizli anahtarını daha sonra kurtaramazsınız.
  16. Tamam'ı tıklayın. "OAuth 2.0 İstemci Kimlikleri" sayfasına yönlendirilirsiniz.
  17. İstemci kimliğiniz projenize eklenir. Ayrıntıları görmek için istemci kimliği URL'sini tıklayın.

Test kullanıcıları ekleme

  1. Sol bölmede Kitle'yi seçin. "Yayınlama durumu"nun Test, "Kullanıcı türü"nün ise Harici olarak ayarlandığını görmeniz gerekir.
  2. "Test kullanıcıları" bölümünde + Kullanıcı ekle düğmesini tıklayın. Verilerini almak istediğiniz kullanıcıların e-posta adresini girin.
  3. Kaydet düğmesini tıklayın.

İstemci kimliğine kapsam ekleme

  1. Sol bölmede Veri Erişimi'ni seçin.
  2. Kapsam ekle veya kaldır düğmesini tıklayın.
  3. API sütununda "Google Health API"yi arayın. Bu codelab'de .../auth/googlehealth.activity_and_fitness.readonly kapsamını kullanıyoruz.
  4. Kapsamı seçtikten sonra Güncelle düğmesine basarak Veri Erişimi sayfasına geri dönün.
  5. Kaydet düğmesini tıklayın.

İstemci kimliğinizi ayarlamayı tamamladınız.

3. Yetkilendirme akışını oluşturma

  1. Makinenizde VS Code uygulamasını açın.
  2. Karşılama ekranında 'ı seçin.
  3. Bu projeyi oluşturmak için bir klasör seçin ve 'ı tıklayın. Ekranınız, Gezgin'de klasör veya proje adınızı gösteren aşağıdaki gibi bir görünüme sahip olmalıdır.VSC
  4. Ana menüden Dosya -> Yeni Metin dosyası'nı seçin.
  5. Dosyaya ad vermek için dosyayı kaydedin. Ana menüden Dosya -> Farklı Kaydet -> Codelab.http'yi seçin. Bu işlem, dosyayı projenize yerleştirir. Dosyanın uzantısı .http veya .rest olmalıdır. Bu codelab'de .http uzantısını kullanıyoruz.

Bu proje boyunca çeşitli değerleri birden çok kez kullanacağız. Bu değerler şunlardır:

client_id

Google Console'daki istemci kimliği değeri.

secret

Google konsolundaki istemcinin gizli anahtar değeri.

redirect_uri

Uygulamanızda yetkilendirme kodunu işleyen bir uç nokta. Codelab'de https://www.google.com adresi kullanılmaktadır.

access_token

İzin akışı tamamlandıktan sonra kullanıcı için oluşturulan erişim jetonu.

refresh_token

İzin akışı tamamlandıktan sonra kullanıcı için oluşturulan yenileme jetonu.

Bu projede kullanılan değişkenleri tanımlayan aşağıdaki kodu ekleyin. Bu kodlar, Codelab.http dosyasının en üst kısmında yer almalıdır. client_id ve secret değerlerini girin.

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

İzin akışını başlatmak için kullanılan yetkilendirme URL'si, verilerine erişmek istediğiniz her kullanıcıya gönderilir. Yetkilendirme URL'sini oluşturmak için Google OAuth uç noktasının ne olduğunu bilmemiz ve istemci kimliğini, erişmek istediğimiz kapsamları ve kullanıcı kapsamları kabul ettiğinde nereye yönlendirileceğini belirtmek için sorgu parametrelerini kullanmamız gerekir. Google yetkilendirme dizesini oluşturmayla ilgili tüm belgeleri belgeler bölümünde bulabilirsiniz.

Google'ın OAuth 2.0 uç noktası https://accounts.google.com/o/oauth2/v2/auth adresindedir. Bu uç nokta yalnızca HTTPS üzerinden erişilebilir. Düz HTTP bağlantıları reddedilir.

Google yetkilendirme sunucusu, web sunucusu uygulamalarının yetkilendirme akışını özelleştirmesi için birçok sorgu dizesi parametresini destekler. Şu zorunlu sorgu parametrelerini kullanacağız: client_id, redirect_uri, response_type ve scope. Belgelerde tüm sorgu parametrelerinin ve açıklamalarının listesi yer alır.

Sorgu parametrelerinin değerleri şunlardır:

client_id

Google Console'daki istemci kimliği değeri

redirect_uri

Uygulamanızda yetkilendirme kodunu işleyen bir uç nokta. Codelab için https://www.google.com adresini kullanın.

response_type

code (web uygulamaları için desteklenen değer)

scope

Kapsamlar, Google konsolundan gelir ve söz dizimi https://www.googleapis.com ile başlar, ardından kapsam adı gelir. Örneğin, https://www.googleapis.com/auth/googlehealth.activity_and_fitness.

Birden fazla kapsam istemek için kapsam parametresine tüm kapsamları boşluklarla ayırarak ekleyin (örneğin, scope1 scope2 scope3). URL'nin bir parçası olduğunda boşluklar URL kodlamalı olmalıdır (örneğin, %20).

Değişkenlerden sonra, yetkilendirme URL'mizi gösterildiği gibi yazın. Projenin en üstünde tanımlanan parametreler, yetkilendirme dizesinde kullanılamaz. Bu nedenle, client_id ve redirect_uri değerlerini eklememiz gerekir. client-id dizesini istemci kimliğinizle değiştirin.

### 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

Kullanıcı izin verdiğinde Google, Google'ın jeton uç noktası çağrılarak erişim jetonuyla değiştirilen bir yetkilendirme kodu sağlar. Aşağıdaki tanımı, yetkilendirme dizesinin altına Codelab.http için jeton uç noktasını çağırmak üzere ekleyin. Sonraki adımda authorization-code yerine yetkilendirme kodu gireceksiniz.

### 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, verilerine eriştiğiniz mevcut kullanıcıyı ifade eder.

4. Hesabı yetkilendirme ve jeton alma

Şimdi yetkilendirme jetonlarını almak için yetkilendirme akışını inceleyeceğiz.

Codelab.http içindeki yetkilendirme dizesi, Google'ın tarayıcı tabanlı izin akışını başlatmak için kullanılır. Rest Client uzantısı, bu URL için İstek Gönder bağlantısını gösterebilir. Bu URL için İstek Gönder'i kullanmayın. Bunun yerine, bağlantıyı kopyalayıp tarayıcınıza yapıştırın veya VS Code'da Ctrl+Tıkla (Windows/Linux) ya da Cmd+Tıkla (Mac) seçeneğini kullanarak varsayılan tarayıcınızda açın.

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 Hesabınızda oturum açmanız istenir. Test kullanıcıları ekle bölümünde yapılandırdığınız test kullanıcı hesaplarından birini kullanarak oturum açmanız gerekir.
  2. Uygulamanın doğrulanmadığını belirten bir mesaj görebilirsiniz. Bunun nedeni, uygulamanın yayınlanmamış olmasıdır. "Devam"a basın.

Doğrulanmamış uygulama uyarısını gösteren ekran görüntüsü.

  1. İzin sayfasında, istenen kapsamlar listelenir. Kullanıcı, bu uygulamayla paylaşmak istediği kapsamları seçebilir. "Devam"ı tıklayın.

İstenen kapsamların paylaşılmasına izin verdikten sonra, belirttiğiniz redirect_uri'a (bu codelab'de https://www.google.com) yönlendirilirsiniz. Google, redirect_uri öğesine bir yetkilendirme kodu ve başka parametreler ekler. Bu nedenle, tarayıcınızın adres çubuğundaki URL şu şekilde görünmelidir:

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

Yetkilendirme kodu, "code=" ile "&scope" arasındaki alfanümerik değerdir. Yukarıdaki örnekte değer şudur:

4/0Ab32j93oyGWqaXE112sP1IKmh3kV1fE4tcHIMXYJQYWgNEtAa_0-YsfkS9Ekj3Be89u3fw

Üretim uygulamasında sunucunuz bunu URL parametrelerinden ayrıştırır. Bu codelab için tarayıcınızdaki URL'den yetkilendirme kodunu kopyalayın.

Şimdi bu yetkilendirme kodunu access_token ve refresh_token ile değiştirin. Codelab.http bölümünde, POST /token istek gövdesindeki authorization-code yerine kopyaladığınız yetkilendirme kodunu girin.

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 çizgisinin hemen üstündeki İstek Gönder bağlantısını tıklayın.

Yanıt şu şekilde görünmelidir:

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

Bu yanıtı aldığınızda, Rest Client, sonraki isteklerde kullanılmak üzere Codelab.http'nin üst kısmında tanımlanan @accessToken ve @refreshToken değişkenlerini otomatik olarak doldurur.

Yenileme jetonları hakkında

Yetkilendirme kodunu değiştirdiğinizde yanıtta access_token dışında refresh_token de yer alabilir. access_token kısa ömürlüdür (genellikle 1 saat). Bir access_token sona erdiğinde, kullanıcının tekrar oturum açmasını veya izin vermesini gerektirmeden yeni bir access_token almak için refresh_token kullanmanız gerekir. Yetkilendirme isteğimize access_type=offline eklediğimiz için bu işlem yapılabilir.

Yanıtın içinde refresh_token görmüyorsanız bunun nedeni, bu uygulama ve kapsamlar için daha önce izin vermiş olmanız olabilir. Yenileme jetonları genellikle yalnızca bir kullanıcı uygulamanız için ilk kez izin verdiğinde veya yetkilendirme URL'sine prompt=consent eklenerek kullanıcı rızası ekranının sonraki yetkilendirmelerde bile görünmesi zorlandığında verilir.

refresh_token uzun ömürlüdür ancak 6 ay boyunca kullanılmazsa, kullanıcı uygulamanıza erişimi iptal ederse veya başka nedenlerle süresi dolabilir ya da geçersiz hale gelebilir. refresh_token değerini ileride kullanmak üzere güvenli bir şekilde saklamanız gerekir.

Daha fazla bilgi için Erişim jetonunu yenileme (çevrimdışı erişim) başlıklı makaleyi inceleyin.

5. Fitbit mobil uygulamasına veri ekleme

Fitbit'i yeni kullanmaya başlayan kullanıcıların Fitbit hesaplarında sorgulanacak veri olmayabilir. Uç noktalardan biri aracılığıyla sorgulayabileceğimiz bir egzersiz günlüğünü manuel olarak ekleyeceğiz. Bir egzersizi manuel olarak kaydetmek için şu adımları uygulayın:

  1. Cihazınızda Fitbit mobil uygulamasını açın. Gerekirse Fitbit hesabınızda oturum açın.
  2. Ekranın sağ alt köşesindeki + düğmesine dokunun.
  3. "Manuel olarak kaydet" bölümünde Etkinlik'e dokunun.
  4. Yürüyüş egzersiz türünü arayıp seçin.
  5. Bugün için bir başlangıç saati girin.
  6. Süreyi 15 dakika olarak değiştirin.
  7. Mesafeyi 1,6 km olarak bırakın.
  8. Ekle'ye dokunun.
  9. Ekrana uzun basıp aşağı kaydırarak mobil uygulamayı Fitbit sunucularıyla senkronize edin. Parmağınızı bıraktığınızda mobil uygulamanın senkronize edildiğini görürsünüz.
  10. "Etkinlik" bölümünde, manuel olarak kaydedilen Yürüyüş girişinizi görmeniz gerekir.Yürüyüş etkinliğini gösteren ekran görüntüsü.

6. Liste yöntemini kullanarak verileri alma

list yöntemini çağırmak için Codelab.http dosyasına /token uç noktasının hemen altına aşağıdaki kodu ekleyin.

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

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

Bu kod, kullanıcının Fitbit hesabında kaydettiği adımları göstermek için list uç noktasını çağırır. Her dakikaya ait adım sayısı, Fitbit Web API v1 Activity Intraday uç noktasına benzer şekilde yanıtta döndürülür.

Çağrıyı yürütmek için GET uç noktasıyla ilgili İsteği Gönder bağlantısına basın. Yanıtınız aşağıdaki gibi görünmelidir:

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

Birçok uç nokta, filtreleme veya sayfalama için sorgu parametrelerini destekler. Örneğin, egzersiz, interval.civil_start_time filtresini destekler. Belirli bir zaman aralığındaki egzersizleri listelemek için Codelab.http'ya aşağıdaki isteği ekleyin:

### 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. Tebrikler

Tebrikler!

Temel codelab'i tamamladınız ve OAuth 2.0 yetkilendirmesini test etmek ve Google Health API uç noktalarına çağrı yapmak için Visual Studio Code ve Rest Client uzantısını nasıl kullanacağınızı başarıyla öğrendiniz. Buradan, bölümün başında yaptığınız gibi Liste yöntemini kullanarak verileri alma bölümündeki ek uç noktaları ekleyebilirsiniz.

Google Health API ekosistemiyle entegre olan uygulamalar geliştirmekten keyif alacağınızı umuyoruz. Daha fazla bilgi için referans dokümanlarındaki diğer Google Health API uç noktalarını inceleyin ve Web Sunucusu Uygulamaları için Google OAuth 2.0 hakkında daha fazla bilgi edinin.