Google Cloud ve OAuth'u ayarlama

Google Health API'ye erişim Google Cloud üzerinden sağlanır. API'yi etkinleştirmek ve Google Hesabı'nı yetkilendirmek için Google Cloud projeniz olmalıdır.

İster mevcut bir Fitbit API geliştiricisi olun ister Google Health API'yi yeni kullanmaya başlayın, API'ye çağrı yapmak için bu adımı tamamlamanız gerekir.

Proje ve OAuth istemcisi oluşturma

Google Health API'yi etkinleştirmek ve OAuth 2.0 istemci kimliği almak için API'yi etkinleştirin ve OAuth 2.0 istemci kimliği alın düğmesini kullanın:

  1. Google Health API için kullanmak istediğiniz mevcut bir Google Cloud projeniz varsa önce bu projenin yönetici hesabında oturum açtığınızdan emin olun. Ardından, düğmeyi tıkladıktan sonra mevcut projeyi uygun projeler listesinden seçin. Aksi takdirde yeni bir proje oluşturun.
  2. "Nereden arıyorsunuz?" sorulduğunda Web Sunucusu'nu seçin.
  3. Yetkili yönlendirme URI'leri için değer olarak https://www.google.com adresini girin. OAuth 2.0 kullanarak yetkilendirme kodu almak için yönlendirme URI'si gereklidir.
  4. Kurulum tamamlandıktan sonra OAuth 2.0 istemci kimliği ve istemci gizli anahtarı değerlerini kopyalayın ve kimlik bilgileri JSON'ını yerel makinenize indirin.
API'yi etkinleştirme ve OAuth 2.0 istemci kimliği edinme

Google Cloud projenizi manuel olarak ayarlamak veya kurulumu doğrulamak ve kimlik bilgilerinizi tekrar almak istiyorsanız:

  1. API Etkinleştirme sayfasında Google Health API'yi etkinleştirin.
  2. Kimlik Bilgileri sayfasında OAuth 2.0 istemci kimliği alın.

Google Konsolu'nu kullanarak OAuth 2.0'ı ayarlama hakkında daha fazla bilgi için Google API'lerine Erişmek İçin OAuth 2.0'ı Kullanma başlıklı makaleyi inceleyin.

Hazırlama ve üretim için ayrı projeler kullanma

Google Health API, ayrı bir sandbox veya hazırlama ortamı sağlamaz. Tüm ortamlarınız üretim Google Health API'sini çağırdığı için ortam ayrımını Google Cloud projesi düzeyinde yönetirsiniz.

Uygulamanız için ortam oluştururken aşağıdaki en iyi uygulamaları izleyin:

  • Geliştirme, hazırlık ve üretim ortamlarınız için ayrı Google Cloud projeleri oluşturun. Her proje kendi OAuth 2.0 istemcisini, kullanıcı rızası ekranını ve webhook abonelerini yönetir.
  • Üretim Google Cloud projenizi veya OAuth 2.0 istemcisini test için kullanmayın. Bu projede yapılan değişiklikler, üretim uygulamanızı doğrudan etkiler.
  • Önce üretim dışı bir projede geliştirme ve test yapın, ardından hazır olduğunuzda değişikliklerinizi üretim projenize uygulayın.
  • Projelerinizi ortama göre görsel olarak ayırt etmek için Google Cloud Console'da etiketleri kullanın. Talimatlar için Etiketlerle proje ortamlarını belirleme başlıklı makaleyi inceleyin.

Test kullanıcıları ekleme

Yeni oluşturulan OAuth istemcileri varsayılan olarak doğrulanmamış durumdadır ve hem test hem de üretim amacıyla 100 kullanıcı sınırı vardır. Bu dönemde yetkilendirmeyi etkinleştirmek için her kullanıcının e-posta adresini proje yapılandırmanızdaki Test kullanıcıları listesine manuel olarak eklemeniz gerekir.

Kitle sayfasındaki test kullanıcıları listesini güncelleyin:

  1. Bu sayfada, "Yayınlama durumu"nun Test, "Kullanıcı türü"nün ise Harici olarak ayarlandığını görürsünüz.
  2. "Test kullanıcıları" bölümünde + Kullanıcı ekle'yi tıklayın. Uygulamanızın sağlık verilerine erişmesine izin vermesi gereken tüm test kullanıcılarının e-posta adresini girin.
  3. Kaydet'i tıklayın.

Google Health API ile 100'den fazla kullanıcıyı desteklemek için üçüncü taraf güvenlik incelemesinin tamamlanması gerekir. Daha fazla bilgiyi OAuth Uygulama Doğrulama Yardım Merkezi'nde bulabilirsiniz.

Kapsam ekleme

İstemcinizin Veri Erişimi sayfasında hangi kapsamları çağırmasına izin verildiğini belirtmeniz gerekir:

  1. Bu sayfada Kapsam ekle veya kaldır'ı tıklayın.
  2. API sütununda "Google Health API"yi arayın. Uygulamanız için gereken kapsamları seçin.
  3. İhtiyacınız olan tüm kapsamları seçtikten sonra Güncelle'yi tıklayarak Veri Erişimi sayfasına dönün.
  4. Kaydet'i tıklayın.

Kapsamlarınızı seçmeden önce kapsam uygulamasını inceleyin.

İstemci kimliğinizi ayarlamayı tamamladınız ve artık Google Health API'ye çağrı yapabilirsiniz.

Kapsamları güncelleyin

Kimlik doğrulama isteğinizde istem parametresini izin olarak ayarlayarak kullanıcıdan uygulamanızı yeniden yetkilendirmesini isteyebilirsiniz. prompt=consent dahil edildiğinde, tüm kapsamlar daha önce Google API'leri projenize verilmiş olsa bile uygulamanız her erişim kapsamı yetkilendirmesi istediğinde kullanıcı rızası ekranı gösterilir.

prompt=consent parametresini kullanarak kapsam eklemek veya kapsamları değiştirmek için aşağıdaki adımları uygulayın:

  1. Uygulamanızın ihtiyaç duyduğu kapsamların tam listesini belirleyin. Bu, hem mevcut kapsamları hem de eklemeniz gereken yeni kapsamları içermelidir.

  2. Yetkilendirme URL'sindeki kapsam parametresini, güncellenen boşlukla ayrılmış kapsam değerleri listesini içerecek şekilde değiştirin.

  3. Kimlik doğrulama URI parametrelerinize prompt=consent ekleyin. Bu, yetkilendirme sunucusunu, bilgileri istemcinize döndürmeden önce kullanıcıdan izin istemeye zorlar.

    Aşağıdaki örnekte, prompt=consent eklenmiş birden fazla kapsam isteyen Google'ın OAuth 2.0 yetkilendirme uç noktasına yönelik bir HTTPS GET isteği gösterilmektedir:

    https://accounts.google.com/o/oauth2/v2/auth?client_id=client-id&redirect_uri=redirect-uri&response_type=code&access_type=offline&scope=https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly%20https://www.googleapis.com/auth/googlehealth.sleep.readonly&prompt=consent
  4. Kullanıcı güncellenen bağlantıyı tıkladığında, istenen tüm kapsamların listelendiği bir izin sayfası gösterilir. Kullanıcı "Devam" veya "İzin ver"i tıkladığında, kapsamların tamamını kapsayan jetonlarla değiştirilebilecek yeni bir yetkilendirme kodu alırsınız.

    prompt=consent yalnızca gerektiğinde (ör. yeni bir yenileme jetonu almanız gerektiğinde veya istenen kapsamlar değiştiğinde) ekleyin.

OAuth2 istemci kitaplıkları

Popüler çerçevelerle entegrasyon için kullanılan mevcut OAuth2 istemci kitaplıklarının listesini Google API'lerine Erişmek İçin OAuth 2.0'ı Kullanma sayfasında bulabilirsiniz.

Google OAuth'u mobil veya masaüstü uygulamalarında uygularken her zaman sistem tarayıcılarını (ör. Android'de Chrome özel sekmeleri veya iOS'te ASWebAuthenticationSession) kullanın. Geçiş anahtarlarını engelleyen ve Google OAuth akışlarını bozan yerleştirilmiş WebView'ları asla kullanmayın. Yönergeler için Google ile oturum açma en iyi uygulamaları başlıklı makaleyi inceleyin.

Kullanıcı, uygulamanızda Google OAuth 2.0 izin akışını tamamlamadan önce Google Health'i Google Hesabı'na bağlamak için Google Health mobil uygulamasında oturum açmalıdır. Google OAuth 2.0, geçerli tüm Google Hesaplarının kimliğini doğrular ve kullanıcı rızası ekranı sırasında hesabın etkin bir Google Health profiline sahip olup olmadığını kontrol edemez.

Kullanıcılardan, uygulamanızda OAuth kullanıcı rızası akışını başlatmadan önce Google Health mobil uygulamasında aşağıdaki adımları tamamlamalarını isteyin:

  1. Google Play Store veya Apple App Store'dan Google Health mobil uygulamasını indirip açın.
  2. Google ile oturum aç'a dokunup uygulamanıza bağlanmak istedikleri Google Hesabı'nı seçer.
  3. Yeni bir Google Health profili oluşturmak için uygulama içi istemleri uygulayın veya mevcut bir Fitbit hesabını Google Hesabı'na taşımak için Fitbit hesabı taşıma adımlarını uygulayın.

Yetkilendirme kodunu OAuth jetonlarıyla değiştirdikten sonra, kullanıcının Google Hesabı'nın Google Health'e bağlı olduğunu doğrulamak için users.getIdentity uç noktasını (GET https://health.googleapis.com/v4/users/me/identity) çağırın. Ardından, hesabı uygulamanızda bağlı olarak işaretleyin. Bağlı olmayan hesapların (400 ACCOUNT_NOT_LINKED) nasıl işleneceğiyle ilgili ayrıntılar için Bağlı olmayan Google Hesaplarını İşleme başlıklı makaleyi inceleyin.

Yenileme jetonları

Kullanıcının sürekli yeniden kimlik doğrulaması gerekmeden Google API'lerine uzun süreli erişim sağlamak için uygulamanız yenileme jetonu kullanmalıdır. Gerekli HTTP istekleri ve parametreler de dahil olmak üzere kapsamlı uygulama ayrıntıları için Google Identity Platform dokümanlarına bakın.

Yenileme jetonunu erişim jetonuyla değiştirmek için Google OAuth 2.0 jeton uç noktasına bir HTTPS POST çağrısı yapın. Aşağıdaki snippet'te örnek bir istek ve yanıt gösterilmektedir:

İstek

curl -L -X POST 'https://oauth2.googleapis.com/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'client_id=client-id&client_secret=client-secret&refresh_token=refresh-token&grant_type=refresh_token'

Yanıt

{
  "access_token": "access-token",
  "expires_in": 3599,
  "scope": "scope-list",
  "token_type": "Bearer",
  "refresh_token": "refresh-token",
  "refresh_token_expires_in": 112154
}

Jeton ne zaman yenilenir?

Erişim jetonlarının süresi dolduğunda veya dolmak üzereyken, kullanıcının etkin oturumunun doğal ilerleyişinin bir parçası olarak yenileme jetonlarını isteğe bağlı olarak yenileyin. Jetonları toplu olarak yenilemekten kaçının (örneğin, tüm kullanıcıların jetonlarını sabit bir zamanda yenilemek için planlanmış bir cron işi veya hizmeti kullanmak).

Aşağıdaki nedenlerden dolayı jetonların toplu olarak yenilenmesi önerilmez:

  • Toplu yenileme, jeton güncellemelerinin etkin kullanıcı senkronizasyon kalıplarıyla eşleştirilmesini engeller. Kullanıcının son senkronizasyon zamanını görmek için Get Devices (Cihazları Al) çağrısını kullanabilirsiniz ancak bu, kullanıcıların onaylamak zorunda olmadığı ek bir OAuth kapsamı gerektirir.
  • Toplu işleme, yenilenmesi gerekmeyen jetonları güncelleyerek hem sistemleriniz hem de Google'ın sunucuları için gereksiz işlem yüküne neden olur.
  • Toplu yenileme sırasında bir ağ sorunu veya sunucu kesintisi meydana gelirse etkilenen tüm kullanıcı jetonları aynı anda etkilenir. Kullanıcı senkronizasyonlarının doğal ilerleyişi sırasında jetonların tek tek yenilenmesi, geçici hataların etkisini tek bir kullanıcıyla sınırlar.
  • Toplu işlerde sorunları teşhis etmek daha zordur. Toplu istekler daha seyrek gerçekleştiği ve aynı anda çok sayıda günlük girişi oluşturduğu için bir olayın başlangıcını belirlemek daha zordur.
  • Toplu çalıştırmalar sırasında jeton isteklerinde eşzamanlılıkta yaşanan yüksek artışlar, sıklık sınırlarına ulaşma veya aralıklı kimlik doğrulama hatalarıyla karşılaşma olasılığını artırır.

Test sırasında jeton davranışı

Yenileme jetonlarının, Google Cloud projenizin yayınlama durumuna bağlı olarak nasıl davrandığını bilin:

  • Test Modu: OAuth kullanıcı rızası ekranınız "Test" yayınlama durumuyla yapılandırılmışsa verilen yenileme jetonları zamana bağlıdır ve 7 gün sonra sona erer. Bu süre zarfında, geçerliliğini yitirene kadar yeni erişim jetonları almak için geçerli ve kullanılabilir olan tek bir yenileme jetonu alırsınız.
  • Yayınlanmış Mod: Uygulamanız "Üretim Aşamasında" durumuna taşındıktan sonra, yenileme jetonları genellikle iptal edilmedikleri veya uzun süre (genellikle altı ay) kullanılmadıkları sürece geçerliliklerini yitirmez.

Sorunsuz bir kullanıcı deneyimi için, 7 günlük jeton geçerlilik süresinin dolmasını önlemek amacıyla uygulamanızı üretim ortamına taşımadan önce yayınladığınızdan emin olun.

Örnek veriler oluşturma

Google, önceden doldurulmuş örnek veya sahte sağlık verileri sağlamaz. Entegrasyonunuzu test etmek için kendi test verilerinizi oluşturmanız gerekir. Test kullanıcılarınız için örnek veriler oluşturmak üzere aşağıdaki yöntemlerden herhangi birini kullanın:

  • Takip cihazı takın: Google Health uygulamasıyla uyumlu bir Fitbit takip cihazı, Pixel Watch veya başka bir akıllı saat takıp yürüyerek adım, kalp atış hızı ve antrenman verileri oluşturun.
  • Mobil takibi etkinleştirin: Google Health uygulamasında MobileTrack'i etkinleştirin ve mobil cihazınızla yürüyüşe çıkın.
  • Verileri manuel olarak kaydetme: Google Sağlık uygulaması üzerinden sağlık metriklerini (ör. uyku, kilo, su veya yiyecek alımı) manuel olarak girin.
  • API'yi kullanarak veri yazma: Verileri programatik olarak doldurmak için doğrudan REST API uç noktalarına yazma istekleri (ör. POST veya PATCH) gönderin. Veri noktaları oluşturma ve güncelleme hakkında daha fazla bilgi için REST referans belgelerine bakın.

Hesaplar Arası Koruma (RISC API)

Depolanan jetonları temizlemek ve kullanıcı arayüzü bağlantı durumunu güncellemek için etkinlik jetonlarında veya hesap bağlama işleminde yapılan değişikliklerden (ör. bağlantısı kaldırılan hesaplar veya iptal edilen jetonlar) haberdar olmak istiyorsanız Risk ve Olay Paylaşımı ve Koordinasyonu'nu (RISC) etkinleştirin. RISC API'yi etkinleştirmek isteğe bağlıdır.

Google Cloud projeniz için RISC API'yi etkinleştirmek üzere:

  1. Google Cloud Console'da RISC API sayfasını açın. Google Health API için kullandığınız projenin seçili olduğundan emin olun.
  2. RISC Şartları'nı okuyun ve koşulları anladığınızdan emin olun.
  3. Şartları kabul ediyorsanız Etkinleştir'i tıklayın.

API'yi etkinleştirdikten sonra, Google tarafından gönderilen etkinlik jetonlarını almak ve doğrulamak için bir HTTPS uç noktası oluşturup kaydetmeniz gerekir.

Hesaplar Arası Koruma ve RISC hakkında daha fazla bilgi için Hesaplar Arası Koruma ile kullanıcı hesaplarını koruma başlıklı makaleyi inceleyin.