Firebase Service Account kullanarak OAuth 2.0 Access Token oluşturan profesyonel Node.js uygulaması.
- ✅ Service Account Tabanlı Authentication
- ✅ JWT ile Güvenli Token Üretimi
- ✅ Postman ve cURL Format Desteği
- ✅ Otomatik Token Validasyonu
- ✅ Konfigürasyon Yönetimi
- ✅ Profesyonel Klasör Yapısı
- ✅ Kapsamlı Error Handling
firebase-oauth-token-generator/
├── src/
│ ├── classes/
│ │ └── FirebaseTokenManager.js # Ana token yönetim sınıfı
│ ├── utils/
│ │ ├── fileUtils.js # Dosya işlemleri
│ │ └── configManager.js # Konfigürasyon yönetimi
│ └── app.js # Ana uygulama
├── config/
│ ├── config.json # Uygulama konfigürasyonu
│ └── firebase-service-account.json # Firebase service account
├── output/
│ └── firebase-access-token.json # Üretilen token çıktısı
├── docs/
├── package.json
└── README.md
- Repository'yi klonlayın:
git clone https://github.com/SafakB/firebase-oauth-token-generator.git
cd firebase-oauth-token-generator- Bağımlılıkları yükleyin:
npm install- Firebase Service Account dosyasını ekleyin:
- Firebase Console'dan service account anahtarını indirin
- ÖNEMLİ: Dosyayı
config/firebase-service-account.jsonolarak kaydedin - Detaylı adımlar için aşağıdaki "Firebase Service Account Nasıl Alınır?" bölümüne bakın
- Firebase Console adresine gidin
- Projenizi seçin veya yeni bir proje oluşturun
- Sol menüden "Proje Ayarları" (⚙️) simgesine tıklayın
- "Service accounts" sekmesine geçin
- "Generate new private key" butonuna tıklayın
- Açılan pencerede "Generate key" butonuna tıklayın
- JSON dosyası otomatik olarak indirilecektir
- İndirilen JSON dosyasını projenizin
config/klasörüne kopyalayın - Dosya adını
firebase-service-account.jsonolarak değiştirin - ÖNEMLİ: Bu dosya hassas bilgiler içerir,
.gitignoredosyasında zaten korunmaktadır
{
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "key-id",
"private_key": "-----BEGIN PRIVATE KEY-----\n...",
"client_email": "firebase-adminsdk-xxxxx@your-project.iam.gserviceaccount.com",
"client_id": "client-id",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token"
}- Service account anahtarını asla public repository'lerde paylaşmayın
- Dosya
.gitignoreile korunmaktadır - Production ortamında environment variables kullanın
- Anahtarı düzenli olarak yenileyin
# Token üret
npm start
# veya
npm run token
# Development mode
npm run dev
# Mevcut token durumunu kontrol et
npm run checkconst FirebaseTokenManager = require('./src/classes/FirebaseTokenManager');
const tokenManager = new FirebaseTokenManager('./config/firebase-service-account.json');
const tokenData = await tokenManager.getAccessToken();
console.log('Access Token:', tokenData.access_token);config/config.json dosyasından ayarları değiştirebilirsiniz:
{
"firebase": {
"defaultScopes": [
"https://www.googleapis.com/auth/firebase.messaging"
]
},
"paths": {
"serviceAccount": "./config/firebase-service-account.json",
"outputDir": "./output"
}
}https://www.googleapis.com/auth/firebase.messaging- FCM içinhttps://www.googleapis.com/auth/firebase.database- Realtime Database içinhttps://www.googleapis.com/auth/firebase.readonly- Sadece okuma içinhttps://www.googleapis.com/auth/userinfo.email- Email bilgisi için
{
"access_token": "ya29.c.c0ASRK0GY...",
"token_type": "Bearer",
"expires_in": 3600,
"expires_at": 1750775672000,
"scope": "https://www.googleapis.com/auth/firebase.messaging",
"formats": {
"postman_headers": {
"Authorization": "Bearer ya29.c.c0ASRK0GY...",
"Content-Type": "application/json"
}
}
}Üretilen token'ı Postman'de şu şekilde kullanın:
- Authorization Type: Bearer Token
- Token: Üretilen access_token değeri
curl -X POST "https://fcm.googleapis.com/v1/projects/YOUR_PROJECT/messages:send" \
-H "Authorization: Bearer ya29.c.c0ASRK0GY..." \
-H "Content-Type: application/json" \
-d '{"message": {...}}'- Service account anahtarları güvenli saklanmalıdır
- Token'lar yaklaşık 1 saat geçerlidir
- Minimum gerekli scope'lar kullanılmalıdır
- Production ortamında environment variables kullanın
-
Service account dosyası bulunamadı
- Dosyanın
config/firebase-service-account.jsonyolunda olduğunu kontrol edin
- Dosyanın
-
Token alma hatası
- Service account anahtarının geçerli olduğunu kontrol edin
- İnternet bağlantınızı kontrol edin
-
Scope hatası
- Kullanılan scope'ların service account tarafından desteklendiğini kontrol edin
config/config.jsondosyasındaavailableScopeslistesine ekleyin- Gerekirse
FirebaseTokenManagersınıfını güncelleyin
FirebaseTokenManagersınıfına yeni format methodu ekleyinapp.jsdosyasında format kullanımını ekleyin
MIT License - Detaylar için LICENSE dosyasına bakın.
- Fork yapın
- Feature branch oluşturun (
git checkout -b feature/AmazingFeature) - Commit yapın (
git commit -m 'Add some AmazingFeature') - Branch'e push yapın (
git push origin feature/AmazingFeature) - Pull Request oluşturun
Sorularınız için:
- Issue açın
- Pull request gönderin
- Dokümantasyonu kontrol edin