1. Genel Bakış ve Mimari
TurBay, birden fazla web ve mobil uygulamanın tek bir kullanıcı hesabı üzerinden güvenle kullanılmasını sağlayan merkezi Single Sign-On (SSO) ve Birleşik Veri (Unified Data) platformudur.
- Merkezi Kimlik: Kullanıcılar tek şifre ile ekosistemdeki tüm uygulamalara bağlanır.
- OAuth 2.0 / OIDC Standardı: RFC 6749 uyumlu Yetkilendirme Kodu (Authorization Code) akışı.
- TurBayUI v0.5: Samsung One UI felsefesiyle tasarlanmış, sade ve tutarlı tasarım sistemi.
- Birleşik Veri Katmanı: Kullanıcı ayarlarının, temalarının ve ortak notlarının tüm uygulamalarda anında eşitlenmesi.
2. TurBayUI v0.5 Tasarım Şablonu
TurBayUI v0.5, ekosisteme dahil edilecek tüm uygulamalarda ortak görsel bütünlüğü sağlamak amacıyla bağımsız tek bir CSS dosyası olarak tasarlanmıştır. Neon ve karmaşık gölgeler içermez; sakin, mat ve ergonomik Samsung One UI öğeleri barındırır.
Projeye Dahil Etme
Herhangi bir HTML sayfasına tek satırda bağlayabilirsiniz:
<!-- TurBayUI v0.5 Stilleri --> <link rel="stylesheet" href="https://turbay.com.tr/assets/css/turbay-ui.css?v=2.0"> <!-- Yardımcı Etkileşim Kütüphanesi (Toast, Modal, Tema) --> <script src="https://turbay.com.tr/assets/js/turbay-ui.js?v=2.0"></script>
Temel CSS Bileşenleri
| Bileşen | Sınıf (Class) | Açıklama |
|---|---|---|
| Butonlar | .tb-btn .tb-btn-primary |
Düz One UI mavi butonu (hover ve active basma animasyonlu). |
| Kart Grubu | .tb-card |
22px squircle köşeli, hafif 1px sınır çizgili One UI yüzeyi. |
| Kapsül Menü | .tb-menu-pills |
Sekmeli sayfa veya filtre seçim çubuğu. |
| One UI Anahtar | .tb-switch |
Akıcı yay animasyonlu açma/kapama anahtarı. |
| İstatistik Kutusu | .tb-stat-tile |
Metrik, sayaç ve widget gösterimi. |
| Rozetler | .tb-badge .tb-badge-primary |
Durum hapı (Resmi, Doğrulanmış, Aktif vb.). |
3. Hızlı SSO Entegrasyonu (Drop-in SDK)
Harici web uygulamanıza TurBay Single Sign-On butonunu eklemek için resmi JavaScript SDK'sını kullanabilirsiniz:
<script src="https://turbay.com.tr/assets/js/sso-client.js?v=2.0"></script>
<script>
// 1. İstemci Tanımlaması
const sso = new TurBaySSO({
clientId: 'tb_client_ornek_123',
redirectUri: window.location.href,
scope: 'profile email data.read data.write'
});
// 2. Giriş Butonu Tıklandığında
document.getElementById('btn-login').addEventListener('click', () => {
sso.login(); // Kullanıcıyı TurBay izin ekranına yönlendirir
});
// 3. Yönlendirme Sonrası (Callback)
const code = sso.getCodeFromUrl();
if (code) {
// Kodu sunucunuza iletip token takası yapın
console.log('Yetkilendirme Kodu:', code);
}
</script>
4. OAuth 2.0 REST API Uç Noktaları
1. Yetkilendirme Başlatma (Authorize)
Kullanıcıyı yetki onay ekranına göndermek için:
GET https://turbay.com.tr/oauth/authorize.php?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&scope=profile+email&state={STATE}
2. Token Takası (Exchange Token)
Alınan tek kullanımlık code değerini gizli anahtarınızla erişim belirtecine (access token) çevirin:
POST https://turbay.com.tr/oauth/token.php
Content-Type: application/json
{
"grant_type": "authorization_code",
"code": "tb_code_...",
"client_id": "tb_client_...",
"client_secret": "tb_secret_...",
"redirect_uri": "https://siteniz.com/callback"
}
Başarılı Yanıt (HTTP 200):
{
"access_token": "tb_at_994a...",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "profile email"
}
3. Kullanıcı Bilgisi (UserInfo)
Aldığınız Bearer Token ile kullanıcının profil ve doğrulanmış e-postasını çekin:
GET https://turbay.com.tr/oauth/userinfo.php Authorization: Bearer tb_at_994a...
Dönen Bilgi (JSON):
{
"sub": "usr_abc123",
"username": "ahmetyilmaz",
"displayName": "Ahmet Yılmaz",
"email": "ahmet@posta.com",
"avatarUrl": "https://api.dicebear.com/...",
"role": "user"
}
5. Birleşik Veri (Unified Data Store)
Kullanıcının uygulamalar arası ortak verilerini (tercihler, tema ayarları, notlar) okuyabilir ve güncelleyebilirsiniz.
Veri Okuma
GET https://turbay.com.tr/api.php?action=data/get&namespace=preferences Authorization: Bearer tb_at_...
Veri Kaydetme ve Senkronizasyon
POST https://turbay.com.tr/api.php?action=data/put
Authorization: Bearer tb_at_...
Content-Type: application/json
{
"namespace": "preferences",
"data": {
"theme": "dark",
"accentColor": "#0072DE",
"notificationsEnabled": true
}
}
6. Sunucu Taraflı Örnek Kod (PHP cURL)
Token takasını PHP backend'iniz üzerinden güvenle gerçekleştirmek için örnek fonksiyon:
<?php
function exchange_turbay_token($code, $clientId, $clientSecret, $redirectUri) {
$ch = curl_init('https://turbay.com.tr/oauth/token.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'grant_type' => 'authorization_code',
'code' => $code,
'client_id' => $clientId,
'client_secret' => $clientSecret,
'redirect_uri' => $redirectUri
]));
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
?>