Node.js'de Bir Google Servis Hesabı JWT'si Oluşturmak
googleapis npm paketi Google API'leri için standarttır.
Çalışıyor. Ancak projenize 380KB ve 450'den fazla bağımlılık ekliyor.
Bir CI betiği için yalnızca tek bir API'ye ihtiyacınız varsa, bu kadar büyük bir yüke ihtiyacınız yok.
Sadece 60 satır kod kullanarak URL dizin durumunu kontrol eden bir betik hazırladım.
Üç yerleşik Node.js modülü kullanıyor:
- crypto
- fetch
- URL
Deponuza sıfır paket ekler.
Google servis hesabı kimlik doğrulaması RFC 7523 standardını takip eder.
Süreç şu şekildedir:
- İstemci e-postanız ve özel anahtarınızla (private key) bir JWT oluşturun.
- Bu JWT'yi Google token uç noktasına (endpoint) POST edin.
- Bir erişim token'ı (access token) alın.
- Bu token'ı API istek başlığınızda (header) kullanın.
Kritik bir detay: webmasters kapsamını (scope) kullanın. Yeni searchconsole kapsamı, URL Inspection API için çalışmayacaktır.
JWT için Base64url kodlaması kullanmalısınız. Standart Base64 üç değişiklik gerektirir:
- Padding (dolgu) karakterlerini kaldırın.
+işaretini-ile değiştirin./işaretini_ile değiştirin.
Google Cloud'dan aldığınız özel anahtarınız zaten doğru formattadır. Token'ı imzalamak için harici kütüphanelere ihtiyacınız yoktur.
Token uç noktasını çağırdığınızda hata yanıtını günlüğe kaydedin (log). Google; süresi dolmuş token'lar veya eksik servis hesapları gibi başarısızlıklar için belirli nedenler sunar.
API çağrısının kendisi için:
AuthorizationbaşlığınıBearer [token]olarak ayarlayın.siteUrldeğerinizin Search Console mülkünüzle (property) tam olarak eşleştiğinden emin olun.- Servis hesabı e-postanızı Search Console'da bir kullanıcı olarak ekleyin.
Bu yaklaşım, CI boru hatları (pipelines) gibi dar kapsamlı görevler için en iyisidir.
Aşağıdaki durumlara ihtiyacınız varsa bunu kullanmayın:
- Birden fazla Google API'si.
- Otomatik token yenileme.
- Karmaşık yeniden deneme (retry) mantığı.
- Yüksek karmaşıklığa sahip üretim (production) sunucu kodu.
Tek bir CI görevi için 60 satır kod, 450 bağımlılıktan daha iyidir. Bu ham akışı anlamak, kütüphaneler hata verdiğinde hata ayıklamayı (debugging) da kolaylaştırır.