API Yetkilendirmesi

Bu dokümanda, Travel Partner API ve Price Feeds API gibi otel API'lerine erişirken uygulamanızda OAuth2.0'ı ayarlamayla ilgili adım adım talimatlar sağlanmaktadır. Uygulamanızı yetkilendirmek için Google API'lerine Erişmek için OAuth 2.0'ı Kullanma başlıklı makaleyi inceleyin.

OAuth 2.0 kurulumu

OAuth 2.0, Google Hesabınızla ilişkilendirilmiş bir hizmet hesabı kullanarak kendinizi tanıtmanızı gerektirir. Hizmet hesabı, bir OAuth 2.0 erişim jetonu karşılığında özel anahtarınızı gönderir. Daha sonra, salt okunur veriler (ör. otel fiyat feed'inizle ilgili fiyatlandırma, otel ve teşhis raporu verileri) için otel API'lerine yapılan çağrılarda bu jetonu kullanabilirsiniz.

Erişim jetonları bir saat (3.600 saniye) süreyle geçerlidir.

Daha önce ClientLogin'i uyguladıysanız OAuth 2.0 yaklaşımı da aşağıdaki farklılıklara sahip olmak üzere benzerdir:

  • Uygulamanız API'ye erişmek için bir Google hizmet hesabı kullanır.
  • API'leri çağırdığınızda Authorization HTTP üst bilgisinde bir OAuth 2.0 erişim jetonu geçirirsiniz.

Hesabınızı herhangi bir Oteller API'si ile OAuth 2.0'ı kullanacak şekilde ayarlamak için aşağıdaki adımları uygulayın:

  1. Google Cloud Console'da yeni proje oluşturma

  2. Hizmet hesabı ve kimlik bilgileri oluşturma

  3. Hizmet Hesabınızın otel verilerinize erişmesine izin verin

Bu adımların her biri sonraki bölümlerde açıklanmaktadır.

1. Adım: Yeni bir Google Cloud Console projesi oluşturun

Google Cloud Console, projelerinizin kullandığı Google API'leri için trafik verilerini, kimlik doğrulamasını ve fatura bilgilerini yönetmek ve görüntülemek amacıyla kullanılır.

Google Cloud Console'da bir proje, üzerinde çalışmakta olduğunuz ve Google Developers API'lerinden ve Google Cloud kaynaklarından yararlanan uygulamayla ilgili ayarları, kimlik bilgilerini ve meta verileri içeren bir koleksiyondur.

Google Cloud Console, API kimlik bilgileri oluşturmak, API'leri etkinleştirmek ve projenizle ilişkili ekip ve fatura bilgilerini yönetmek için de kullanılır.

Yeni bir Google Cloud Console projesi oluşturmak için:

  1. Gmail veya Google Hesabınızda oturum açın.

  2. Google Cloud Console'u açın. Bu ilk projenizse ana görünümde PROJE OLUŞTUR düğmesi gösterilir:

    fig1

  3. PROJE OLUŞTUR düğmesini tıklayın. Google Cloud Console, Yeni Proje iletişim kutusunu gösterir:

    fig2

    Proje adı giriş alanına yeni projeniz için bir kolay ad girin. Alanın altında, Google Cloud Console sizin için bir proje kimliği oluşturur. Kimliğin tüm projeler genelinde benzersiz olmasını sağlar. Örneğin, "Yeni Projem" adını girerseniz Google Cloud Console my-new-project-266022 gibi bir kimlik atar.

  4. Yeni projenizi oluşturmak için Oluştur düğmesini tıklayın.

  5. Gezinme menüsünü kullanarak API'ler ve Hizmetler > Kontrol Paneli'ni seçin.

    fig3

    Aşağıdaki resimde, Google Cloud Console'un sol üst köşesindeki gezinme menüsü gösterilmektedir. Bu işlem, projenizin Kontrol Paneli görünümünü açar:

    fig4

Daha fazla bilgi için Proje oluşturma ve yönetme başlıklı makaleyi inceleyin.

2. Adım: Hizmet hesabı oluşturun ve hesabın kimlik bilgilerini oluşturun

Hizmet hesapları, bir web uygulaması ve otel verileriniz arasındaki etkileşim gibi sunucular arası etkileşimler tarafından kullanılır.

Hizmet hesabı oluşturmak ve yapılandırmak için:

  1. Google API Konsolu ana görünümünde, sol taraftaki gezinme panelinde yer alan Kimlik Bilgileri öğesini tıklayın. Google Cloud Console, Kimlik Bilgileri görünümünü gösterir.

    Kimlik Bilgileri görünümünde, projenizin istemci kimlikleri ve kimlik bilgileri gösterilir. Uygulamanız, OAuth 2.0 erişim jetonu isterken istemci kimliğini kullanır. Yeni projelerde henüz müşteri veya kimlik bilgileri yoktur.

  2. API'ler ve hizmetlerde kimlik bilgileri bağlantısını tıklayın.

  3. Kimlik bilgileri oluştur düğmesini tıklayın ve filtreden Hizmet hesabı anahtarı'nı seçin. Hizmet hesabı anahtarı oluştur görünümü görüntülenir.

  4. Hizmet hesabı filtresinden Yeni hizmet hesabı'nı seçin.

  5. Bir hizmet hesabı adı ve hizmet hesabı kimliği girin.

    Ad istediğiniz herhangi bir ad olabilir, ancak hesap kimliği tüm projeler genelinde benzersiz olmalıdır. Google Cloud Console, girdiğiniz adı temel alarak sizin için benzersiz bir hesap kimliği oluşturur.

  6. Anahtar türü için JSON'u seçin. JSON gereklidir.

  7. Oluştur düğmesini tıklayın. Google Cloud Console, projeniz için bir özel veya ortak anahtar çifti oluşturur. Özel anahtar, tarayıcınızın indirme yaptığı varsayılan konuma kaydedilir. .JSON biçimindeki dosyayı indirmeniz gerekir.

    Komut dosyalarınızda veya API'nize erişen diğer uygulamalarda özel anahtarı kullanırsınız.

    Google Cloud Console, anahtarları oluşturmayı tamamladığında "Hizmet hesabı oluşturuldu" mesajını gösterir.

  8. Tamam, anladım düğmesini tıklayın. Google Cloud Console sizi Kimlik Bilgileri görünümüne döndürür. Hizmet hesabınızla ilgili ayrıntıları onaylamak ve projenizle ilişkilendirilen hizmet hesabını görmek için bu görünümde Hizmet hesaplarını yönet'i tıklayın.

    Hizmet hesabı kendisiyle ilişkilendirilmiş şu kimlik bilgilerine sahiptir:

    • İstemci kimliği: Uygulamanızın OAuth 2.0 erişim jetonu isterken kullandığı benzersiz tanımlayıcı.
    • E-posta adresi: Hizmet hesabı için "hesap_adı@proje_adı.google.com.iam.gserviceaccount.com" biçiminde oluşturulan bir e-posta adresi.
    • Sertifika dijital parmak izleri: İndirdiğiniz özel anahtarın kimliği.

Daha fazla bilgi için Sunucudan Sunucuya Uygulamalar için OAuth 2.0'ı Kullanma bölümüne bakın.

3. Adım: Hizmet hesabının Hotel Center verilerinize erişmesine izin verin

Son adım, yeni hizmet hesabının Hotel Center hesabınıza erişmesini sağlamaktır. Hizmet hesabı, önceki adımda oluşturduğunuz e-posta adresiyle tanımlanır. Hotel Center paylaşım ayarlarını kullanarak bu hesaba erişim sağlarsınız.

Hesaba kullanıcı eklemek için gerekli erişiminiz yoksa bize ulaşın formunu kullanarak Google Oteller Ekibi ile iletişime geçin ve hesabınız için sahiplik ayarlanmasını isteyin. Bir veya daha fazla e-posta adresinin sahip statüsünde olmasını isteyebilirsiniz. Hotel Center erişimi hakkında daha fazla bilgi için Hotel Center ile Google Ads'i bağlama başlıklı makaleyi inceleyin.

Bir hizmet hesabının Hotel Center verilerinize erişmesine izin vermek için:

  1. Yeni bir tarayıcı penceresinde Otel Merkezi'ni açın. fig7

  2. Paylaşım iletişim kutusunu açmak için Google Hotel Center banner'ında kullanıcı ekle simgesini tıklayın.

    fig8

  3. Daha fazla kullanıcı ekle alanına, Hotel Center hesabınıza eklemek istediğiniz hizmet hesabının e-posta adresini girin.

  4. Kullanıcıları bilgilendir seçeneğini işaretli bırakın.

  5. Filtreden Yönet'i seçin.

  6. Davet et düğmesini tıklayın.

  7. Hotel Center hesabınıza kullanıcı ekledikten sonra hizmet hesabınız yaklaşık 24 saat içinde API erişimi için etkinleştirilir.

Google, hizmet hesabınız için API erişiminin etkinleştirildiğini bildirdikten sonra API'ye OAuth 2.0 ile erişmeye başlayabilirsiniz.

OAuth 2.0'ı kullanma

API'ye erişmek için uygulamanızın, hizmet hesabının oluşturduğu e-posta adresi ve özel anahtarla kendini Google'a tanıtması gerekir. Google'ın kimlik doğrulama sistemi, bu anahtarı uygulamanızın API çağrılarında Authorization üstbilgisinde geçirdiğiniz bir OAuth 2.0 erişim jetonu ile değiştirir.

Yetki verilmiş bir API çağrısı yapmaya hazırlanma başlıklı makaleyi inceleyin.

Kapsamlar

Hotels API için SCOPES aşağıdaki gibidir:

Travel Partner API: "https://www.googleapis.com/auth/travelpartner"

Fiyat Feed'leri API'si: "https://www.googleapis.com/auth/travel-partner-price-upload"

Kimlik bilgilerini oluştururken hizmet hesabını belirtmeniz gerekir. Hizmet hesabı oluşturma ve hesabın kimlik bilgilerini oluşturma başlıklı makaleyi inceleyin.

Uygulamanızı geliştirirken API anahtarlarını kullanarak uygulamanızın kimliğini doğrulamayla ilgili en iyi uygulamaları izlediğinizden emin olun. Daha fazla bilgi edinin.

Örnek

from google.oauth2 import service_account
from google.auth.transport.requests import Request

# You can use a single or multiple scopes
SCOPES =
['https://www.googleapis.com/auth/travel-partner-price-upload','https://www.googleapis.com/auth/travelpartner']
SERVICE_ACCOUNT_FILE = 'service_account_key_file.json'

cred = service_account.Credentials.from_service_account_file(
                        SERVICE_ACCOUNT_FILE,
                        scopes=SCOPES)
cred.refresh(Request())
headers = {}
cred.apply(headers)

Travel Partner API

Travel Partner API, konaklama iş ortaklarının büyük veya karmaşık hesapları yönetmek için Hotel Center bilgilerini almasına ve Hotel Center verilerini değiştirmesine olanak tanır.

Travel Partner API'niz için yetkilendirme almak üzere OAUTH 2.0 kurulum talimatlarını uygulayın.

Travel Partner API için yeni bir proje oluşturduğunuzda yeni Google Cloud Console projenize erişimi etkinleştirmeniz gerekir.

Travel Partner API'ye erişimi etkinleştirmek için adımları uygulayın:

  1. Projenizin Kontrol Paneli görünümüne gidin.

  2. API'leri ve Hizmetleri Etkinleştir'i tıklayın. Bu işlem, API Kitaplığı karşılama sayfasını görüntüler.

  3. Arama alanına "Travel Partner API" yazmaya başlayın. Konsolda, yazdıklarınızla eşleşen API'lerin listesi gösterilir.

  4. Tabloda eşleşen API'yi tıklayın. Google Cloud Console, ilgili API ile ilgili açıklamayı gösterir.

  5. Projenizde bu API'yi etkinleştirmek için API'yi Etkinleştir düğmesini tıklayın.

Daha fazla bilgi için Hizmetleri Etkinleştirme ve Devre Dışı Bırakma başlıklı makaleyi inceleyin.

Travel Partner API artık Google Hesabınızın yeni projesi için etkinleştirilmiştir.

Travel Partner API'nin kapsamı: "https://www.googleapis.com/auth/travelpartner"

Travel Partner API'nin uç noktası: "https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"

Price Feeds API

Fiyat Feed'leri API'si, konaklama iş ortaklarının her otel için özelleştirilmiş fiyatlandırma verileri sağlamasına olanak tanır. Google konaklama iş ortakları, Google'a fiyat yüklerken kimliklerini doğrulamak ve yetkilendirmek için OAuth2.0'ı kullanabilir. Fiyat Feed'leri API'si için yetkilendirme almak üzere OAUTH 2.0 kurulum talimatlarını uygulayın.

Unutulmaması gereken noktalar

Fiyat Feed'leri API'si için yetkilendirme talimatlarındaki önemli farklılıkları göz önünde bulundurun.

  1. İş ortakları, OAuth 2.0 kurulumunda sağlanan talimatları kullanarak Google Cloud Console'da yeni bir Fiyat Feed'leri OAuth2.0 projesi oluşturmalıdır.

  2. Google Cloud Console'da Price Feeds API'yi etkinleştirmek NOT ve yoksayılabilir. Yalnızca bir hizmet hesabına ve anahtara ihtiyacınız vardır. Ardından, Fiyat Feed'leri projesine Hotel Center verilerinize erişim izni vermek için aynı hizmet hesabını ve anahtarı kullanın. API'nizi yapılandırmayı tamamlamak için OAuth2.0 kurulumunda belirtilen kalan adımları uygulayın.

Fiyat feed'leri için OAuth2.0 erişim jetonu alma

Sonraki adım, hizmet hesabı anahtar dosyası kullanılarak konaklama fiyatı yükleme kapsamına sahip bir OAuth2.0 erişim jetonu elde etmektir. Yetki verilmiş API çağrısı yapmaya hazırlanma bölümünde verilen talimatları uygulayarak Fiyat Feed'leri projenize gelen istekleri yetkilendirebilir, ardından edinilen kimlik bilgilerinden erişim jetonunu alıp "Authorization" HTTP üst bilgisine ayarlayabilirsiniz.

Konaklama fiyatı yükleme kapsamı: "https://www.googleapis.com/auth/travel-partner-price-upload"

Fiyatları Yükleme

İş ortakları, erişim jetonunu aldıktan sonra fiyat feed'lerini yükleyebilir. Bu işlem, kimlik doğrulama ve yetkilendirme için statik IP kullanmaya benzer. Bununla birlikte, aşağıdaki değişiklik uygulanır:

  • "Authorization" HTTP üst bilgisinde erişim jetonunu ayarlama
curl -X POST -H "Authorization: Bearer <access token>"
www.google.com/travel/lodging/uploads/accounts/<account_id>/ota/hotel_rate_amount_notif --data-binary @<price_feed_file_location>

Fiyat Feed'leri API'si için OAuth2.0 kurulumunu test etme

Yükleme yollarından herhangi birine boş bir dosya veya gerçek fiyat verileri içeren bir dosya yükleyerek OAuth2.0 kurulumunuzu test edebilirsiniz. HTTP yanıt durumunuzu kontrol etmek için tabloyu kullanın.

HTTP yanıt durumu Mesaj
200 Successful (OK)
401 Service account creation or access token fetch was not successful
403 Service account access wasn't granted to the Hotel Center account or both the service account key and access token has expired

Sorun giderme

Sorun mu yaşıyorsunuz? Aşağıdaki öğeleri hızlı bir şekilde kontrol etmek sorunu çözebilir.

  1. Google Cloud Console'da bir proje oluşturdunuz mu?
  2. Hizmeti projenizde etkinleştirdiniz mi?
  3. İstemci kimliği oluştur'u tıklayıp Hizmet hesabı'nı seçtikten sonra oluşturulan özel anahtar olan bir .JSON dosyası indirdiniz mi?
  4. Hizmet hesabı istemci kimliği e-posta adresi aldınız mı ("nnnnnnn@app_name.google.com.iam.gserviceaccount.com" biçiminde)?
  5. Bu hesabı paylaş düğmesini tıklayarak Otel Reklamları Merkezi hesabınızı hizmet hesabıyla paylaştınız mı?
  6. Hizmet hesabının e-posta adresini ve iş ortağı kimliğinizi Teknik Hesap Yöneticinize (THY) gönderdiniz mi?
  7. API çağrılarınız Authorization üst bilgisinde yakın zamanda alınmış bir jeton geçiriyor mu?
  8. Jetonunuz 1 saatten eski mi?

Aşağıdaki tabloda sık rastlanan bazı hatalar ve olası çözümler listelenmiştir:

Hata Açıklama
Invalid credentials Bu, birçok anlama gelebilir. Bu hatayla karşılaşırsanız şunu kontrol edin:
  • Geçerli bir hamiline ait jeton içeren Authorization üstbilgisi belirttiniz mi?
  • Hamiline ait jeton süresi bir saatten az mı? Jeton yalnızca bir saat süreyle kullanılabilir.
  • Doğru iş ortağı adını belirttiniz mi (partner sorgu dizesi parametresiyle)? Değer, Otel Reklamları Merkezi'nde görünen iş ortağı adınız değil, benzersiz iş ortağı kimliğinizdir. İş ortağı kimliğinizi bilmiyorsanız Teknik Hesap Yöneticinizle (THY) iletişime geçin.
Not found Uç noktanız büyük olasılıkla bozuk. Bir GET isteği gönderdiğinizden ve istek URL'sinin geçerli olduğundan (erişmeye çalıştığınız API söz dizimine uygun olduğundan) emin olun.
Invalid string value Uç noktanın bir veya daha fazla bölümü geçersiz söz dizimi içeriyor. Örneğin, yolun bir kısmını yanlış yazmış olabilirsiniz. Yolun tamamında alt çizgi, büyük harf ve ifadeleri doğru şekilde kullandığınızdan emin olun.
Unsupported output format Bu hata en çok Reports API kullanılırken ortaya çıkar. GET isteğinizin URL'sinde "alt=csv" değerini belirtmeniz gerekir. Reports API, JSON'u desteklemez.
AccessTokenRefreshError/Invalid grant Uygulamanızı çalıştırırken bu hatanın nedeni aşağıdakilerden biri olabilir:
  • Hizmet hesabı e-posta adresiniz yanlış. Google Cloud Console 'da e-posta hesabını kontrol edin ve API'nize erişme yetkisine sahip olduğundan emin olun.
  • E-posta adresinin API erişimi yok. E-posta adresinin, Hotel Center üzerinden paylaşılan otel verilerinize erişim yetkisi olup olmadığını kontrol edin.
  • Anahtar dosyası, hizmet hesabı için doğru dosya değil. Yeni bir .JSON sertifikası indirmek için Google Cloud Console'u kullanın ve uygulamanızın doğru sertifikayı gösterdiğinden emin olun.
HotelAdsAPIConnection object has no attribute credentials Uygulamayı çalıştırırken .JSON dosyanızın yolu yanlış.
Invalid scope Uygulamayı çalıştırırken API kapsamınız aşağıdakilerden biri olmalıdır:
  • "https://www.googleapis.com/auth/travelpartner"
  • "https://www.googleapis.com/auth/travel-partner-price-upload"
Forbidden Kullandığınız hesap kimliği, erişim yetkiniz olmayan bir hesap. Bir alt hesap sahibiyseniz üst veya kök hesap kimliğine erişemeyebilirsiniz.