Bu belgede, Travel Partner API ve Fiyat Feed'leri API'si gibi otel API'lerine erişirken uygulamanızda OAuth 2.0'ı ayarlama ile ilgili adım adım talimatlar verilmektedir. Uygulamanızı yetkilendirmek için Google API'lerine Erişmek İç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 bu jetonu, otel fiyatı feed'inizle ilgili fiyatlandırma, otel ve teşhis raporu verileri gibi salt okunur veriler için otel API'lerine yapılan çağrılarda kullanabilirsiniz.
Erişim jetonları bir saat (3.600 saniye) sürelidir.
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ğırırken
AuthorizationHTTP üstbilgisinde bir OAuth 2.0 erişim jetonu geçirirsiniz.
Hesabınızı herhangi bir Hotels API ile OAuth 2.0'ı kullanacak şekilde ayarlamak için aşağıdaki adımları uygulayın:
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 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:
Gmail veya Google Hesabınızda oturum açın.
Google Cloud Console'u açın. Bu ilk projenizse ana görünümde PROJE OLUŞTUR düğmesi gösterilir:
PROJE OLUŞTUR düğmesini tıklayın. Google Cloud Console, Yeni Proje iletişim kutusunu gösterir:
Proje adı giriş alanına yeni projeniz için bir kolay ad girin. Alanını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-266022gibi bir kimlik atar.Yeni projenizi oluşturmak için Oluştur düğmesini tıklayın.
Gezinme menüsünü kullanarak API'ler ve Hizmetler > Kontrol Paneli'ni seçin.
Aşağıdaki resimde, Google Cloud Console'un sol üst kısmındaki gezinme menüsü gösterilmektedir. Bu işlem, projenizin Kontrol Paneli görünümünü açar:
Daha fazla bilgi için Proje oluşturma ve yönetme başlıklı makaleyi inceleyin.
2. adım: Hizmet hesabı oluşturun ve 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:
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.
API'ler ve hizmetlerde kimlik bilgileri bağlantısını tıklayın.
Kimlik bilgisi oluştur düğmesini tıklayın ve filtrede Hizmet hesabı anahtarı'nı seçin. Hizmet hesabı anahtarı oluştur görünümü görüntülenir.
Hizmet hesabı filtresinden Yeni hizmet hesabı'nı seçin.
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.
Anahtar türü olarak JSON'ı seçin. JSON gereklidir.
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.
.JSONbiç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.
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 başlıklı makaleyi inceleyin.
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'ın paylaşım ayarlarını kullanarak bu hesaba erişim sağlarsınız.
Hesaba kullanıcı eklemek için uygun erişiminiz yoksa Bize ulaşın formunu kullanarak Google Oteller ekibiyle iletişime geçin ve hesabınız için sahiplik oluşturulması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:
Yeni bir tarayıcı penceresinde Hotel Center'ı açın.
Google'ın Hotel Center banner'ında, paylaşım iletişim kutusunu açmak için kullanıcı ekle simgesini tıklayın.
Başka kullanıcı ekle alanına, Hotel Center hesabınıza eklemek istediğiniz hizmet hesabının e-posta adresini girin.
Kullanıcıları bilgilendir seçeneğini seçili bırakın.
Filtreden Yönet'i seçin.
Davet et düğmesini tıklayın.
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.
Temsilci API çağrısı yapmaya hazırlanma başlıklı makaleyi inceleyin.
Kapsamlar
Hotels API için SCOPES:
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 kimlik bilgilerini oluşturma başlıklı makaleyi inceleyin.
Uygulamanızı geliştirirken API anahtarlarını kullanarak uygulamanızın kimliğini doğrulama ile ilgili en iyi uygulamaları izlediğinizden emin olun. Daha fazla bilgi
Ö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 Hotel Center bilgilerini almasına ve büyük veya karmaşık hesapları yönetmek için Hotel Center verilerini değiştirmesine olanak tanır.
Travel Partner API'niz için yetkilendirme almak üzere OAUTH 2.0 kurulumu 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 Partners API'ye erişimi etkinleştirmek için aşağıdaki adımları uygulayın:
Projenizin kontrol paneli görünümüne gidin.
API'leri ve Hizmetleri Etkinleştir'i tıklayın. Bu işlem, API Kitaplığı karşılama sayfasını görüntüler.
Arama alanına "Travel Partner API" yazmaya başlayın. Konsol, yazdıklarınızla eşleşen API'lerin listesini gösterir.
Tabloda eşleşen API'yi tıklayın. Google Cloud Console, söz konusu API ile ilgili bir açıklama gösterir.
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>"
Fiyat Feed'leri API'si
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 kimlik doğrulamak ve yetkilendirmek için OAuth 2.0'ı kullanabilir. Fiyat Feed'leri API'si için yetki almak üzere OAUTH 2.0 kurulum talimatlarını uygulayın.
Unutulmaması gereken noktalar
Price Feeds API'nin yetkilendirme talimatlarındaki önemli farklılıkları not edin.
İş ortakları, OAuth 2.0 kurulumunda verilen talimatları kullanarak Google Cloud Console'da yeni bir Price Feeds OAuth2.0 projesi oluşturmalıdır.
Google Cloud Console'da Price Feeds API'nin etkinleştirilmesi gerekmez ve bu adım atlanabilir. Yalnızca bir hizmet hesabı ve anahtarı oluşturmanız, ardından aynı hizmet hesabı ve anahtarı kullanarak Fiyat Feed'leri projesine Hotel Center verilerinize erişim izni vermeniz gerekir. API'nizi yapılandırmayı tamamlamak için OAuth 2.0 kurulumunda belirtilen kalan adımları uygulayın.
Fiyat feed'leri için OAuth 2.0 erişim jetonu alma
Sonraki adım, hizmet hesabı anahtar dosyasını kullanarak konaklama fiyatı yükleme kapsamıyla bir OAuth 2.0 erişim jetonu almaktır. Yetkilendirilmiş API çağrısı yapmaya hazırlanma bölümünde verilen talimatları uygulayarak Fiyat Feed'leri projenize yönelik istekleri yetkilendirebilir, ardından edinilen kimlik bilgilerinden erişim jetonunu çıkarıp "Authorization" HTTP üstbilgisinde ayarlayabilirsiniz.
Konaklama fiyatı yükleme kapsamı:
"https://www.googleapis.com/auth/travel-partner-price-upload"
Fiyatları yükleme
Erişim jetonunu aldıktan sonra iş ortakları, fiyat feed'lerini kimlik doğrulama ve yetkilendirme için statik IP kullanmaya benzer şekilde yükleyebilir. Ancak aşağıdaki değişiklikler yapılmalıdır:
- Erişim jetonunu
"Authorization"HTTP üstbilgisinde ayarlayın.
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 OAuth 2.0 kurulumunu test etme
OAuth 2.0 kurulumunuzu boş bir dosya yükleyerek veya yükleme yollarından herhangi birine gerçek fiyat verileri yükleyerek test edebilirsiniz. HTTP yanıtınızın durumunu 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.
- Google Cloud Console'da bir proje oluşturdunuz mu?
- Projenizde hizmeti etkinleştirdiniz mi?
.JSONdosyası (İstemci kimliği oluştur'u tıklayıp Hizmet hesabı'nı seçtikten sonra oluşturulan özel anahtar) indirdiniz mi?- Şu biçimde bir hizmet hesabı istemci kimliği e-posta adresi aldınız mı:
nnnnnnn@app_name.google.com.iam.gserviceaccount.com? - Bu hesabı paylaş düğmesini tıklayarak Otel Reklamları Merkezi hesabınızı hizmet hesabı ile paylaştınız mı?
- Hizmet hesabının e-posta adresini ve iş ortağı kimliğinizi Teknik Hesap Yöneticinize (THY) gönderdiniz mi?
- API çağrılarınız
Authorizationüstbilgisinde yakın zamanda alınmış bir jeton geçiriyor mu? - 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:
şunları kontrol edin:
|
| 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:
|
| 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:
|
| 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. |