Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Google firebase bağlantısı
#1
Merhabalar, 

FMX ile PC için geliştirdiğim uygulamamda Google firebase bağlantısı yapmak istiyorum.
Uzun bir araştırma yaptım ve bir şey bulamadım; Sanırım Delphi tarafında Google firebase bağlantısı sadece mobil için bağlantı desteği sağlanabiliyor. 

PC'de TFDConnection ile Google firebase bağlantının nasıl yapıldığını ilen var mı?
Cevapla
#2
Bu linki ve bu GitHub linkini kontrol etmek isteyebilirsiniz.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#3
@mrmarman Teşekkür ederim ama örneklerden inanın bir şey anlamadım. Biraz bana üst seviye geldi.
Cevapla
#4
Üstadım zaten Firebase Hosting / Database vb. hepsi yeni kuşak üst düzey REST yapılar. Biraz kendinize zaman tanıyın.
Firebase database bir yana, Firebase hosting bile web sayfası oluşturacağınız dosyaları FTP ile değil, bir arabirim ile sizin bilgisayarınızda belirlediğiniz bir klasörden DROPBOX vb. benzeri şekilde sistemine deploy ediyor.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#5
Teşekkür ederim
Cevapla
#6
(26-10-2021, Saat: 13:17)Husv Adlı Kullanıcıdan Alıntı: Merhabalar, 

FMX ile PC için geliştirdiğim uygulamamda Google firebase bağlantısı yapmak istiyorum.
Uzun bir araştırma yaptım ve bir şey bulamadım; Sanırım Delphi tarafında Google firebase bağlantısı sadece mobil için bağlantı desteği sağlanabiliyor. 

PC'de TFDConnection ile Google firebase bağlantının nasıl yapıldığını ilen var mı?




Bu konuda bir ara bende aratştırma yapmıştım, PC'den firebase bağlantısı nette hiç görmedim.
Cevapla
#7
REST ile erişim yapılıyor derken REST destekleyen neresi varsa oradan erişim yapılır.

Şöyle bir basit örnek vereyim...

NOT : Google OAuth 2.0 Token almak konusunu DelphiCan aramalarından bulabilirsiniz. Sizin hangi scope vereceğini örneklemek için o kısmı da kod satırlarında göreceksiniz.
 

Uses System.Net.HttpClientComponent;

procedure TForm1.Button1Click(Sender: TObject);
// https://firebase.google.com/docs/referen...t/database
const
  LServiceAccountJson = 'arman-firebase-cloud-messaging-firebase-adminsdk-728sv-7c9e8490dd.json';

  LRealtimeFirebase   = 'https://arman-firebase-cloud-messaging.firebaseio.com/';
  LGetAll             = '.json';
  LContenType         = 'application/x-www-form-urlencoded';
  LUserAgent          = 'ARMAN Firebase Gateway/29.10.2021';
var
  LClient   : System.Net.HttpClientComponent.TNetHTTPClient;
  LContent  : TStringStream;
  LStatus   : Integer;
begin
  With TStringList.Create do try
    LoadFromFile( LServiceAccountJson );
    OAuth2Helper1.ServiceJSON := Text;
  finally
    Free;
  end;
  OAuth2Helper1.Scopes.Add( 'https://www.googleapis.com/auth/userinfo.email' ); // Database erişim için gerekli scope budur
  OAuth2Helper1.Authorization;

  LClient := TNetHTTPClient.Create(nil);
  try

    LClient.CustomHeaders['Content-Type']   := LContenType;
    LClient.UserAgent                       := LUserAgent;
    LClient.CustomHeaders['Authorization']  := Format('%s %s', [  OAuth2Helper1.AuthToken.aToken_type
                                                                , OAuth2Helper1.AuthToken.aAccess_Token ]);

    LContent  := TStringStream.Create;
    try
      LStatus := LClient.Get( LRealtimeFirebase + LGetAll, LContent ).StatusCode;
      if LStatus = 200 then
      begin
        Memo1.Lines.Add( LContent.DataString );
      end else begin
        Memo1.Lines.Add( 'HATA :  ' + LContent.DataString );
      end;
    finally
      FreeAndNil(LContent);
    end;
  finally
    FreeAndNil( LClient );
  end;
end;

 

Çalışma şekli de şu şekilde... (Resimlere tıklayınca tam boy görebilirsiniz)


nl1tljzcfl5ipha6btm1.gif        k4u4e1ws4g7nhmwo9xuj.gif
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#8
Emeğinize sağlık hocam.
Cevapla
#9
(29-10-2021, Saat: 14:28)mrmarman Adlı Kullanıcıdan Alıntı: REST ile erişim yapılıyor derken REST destekleyen neresi varsa oradan erişim yapılır.

Şöyle bir basit örnek vereyim...

NOT : Google OAuth 2.0 Token almak konusunu DelphiCan aramalarından bulabilirsiniz. Sizin hangi scope vereceğini örneklemek için o kısmı da kod satırlarında göreceksiniz.
 

Uses System.Net.HttpClientComponent;

procedure TForm1.Button1Click(Sender: TObject);
// https://firebase.google.com/docs/referen...t/database
const
  LServiceAccountJson = 'arman-firebase-cloud-messaging-firebase-adminsdk-728sv-7c9e8490dd.json';

  LRealtimeFirebase   = 'https://arman-firebase-cloud-messaging.firebaseio.com/';
  LGetAll             = '.json';
  LContenType         = 'application/x-www-form-urlencoded';
  LUserAgent          = 'ARMAN Firebase Gateway/29.10.2021';
var
  LClient   : System.Net.HttpClientComponent.TNetHTTPClient;
  LContent  : TStringStream;
  LStatus   : Integer;
begin
  With TStringList.Create do try
    LoadFromFile( LServiceAccountJson );
    OAuth2Helper1.ServiceJSON := Text;
  finally
    Free;
  end;
  OAuth2Helper1.Scopes.Add( 'https://www.googleapis.com/auth/userinfo.email' ); // Database erişim için gerekli scope budur
  OAuth2Helper1.Authorization;

  LClient := TNetHTTPClient.Create(nil);
  try

    LClient.CustomHeaders['Content-Type']   := LContenType;
    LClient.UserAgent                       := LUserAgent;
    LClient.CustomHeaders['Authorization']  := Format('%s %s', [  OAuth2Helper1.AuthToken.aToken_type
                                                                , OAuth2Helper1.AuthToken.aAccess_Token ]);

    LContent  := TStringStream.Create;
    try
      LStatus := LClient.Get( LRealtimeFirebase + LGetAll, LContent ).StatusCode;
      if LStatus = 200 then
      begin
        Memo1.Lines.Add( LContent.DataString );
      end else begin
        Memo1.Lines.Add( 'HATA :  ' + LContent.DataString );
      end;
    finally
      FreeAndNil(LContent);
    end;
  finally
    FreeAndNil( LClient );
  end;
end;

 

Çalışma şekli de şu şekilde...


nl1tljzcfl5ipha6btm1.gif        k4u4e1ws4g7nhmwo9xuj.gif


Harikasınız; Tek sıkıntı: OAuth2Helper1.ServiceJSON  bunu anlayamadım   Angel
Cevapla
#10
Merhaba.

- OAuth2Helper kendi yazdığım bir sınıf. Belirttiğim gibi Authorization için OAuth 2.0 gerekli. Bu sadece bir detay. Bir çok yerde lazım olan bir gereklilik olmaya da başladı ayrıca.

- Google OAuth2 işleminde ihtiyacımız olan Servis anahtar bilgileri yer alan bir JSON dosyayı bu sınıftaki property aracılığıyla verdiğimizde tek tek "client_id", "private_key", "token_uri" vs.vs dosyadan otomatik olarak okunarak gerekli olduğunda kullanılmasını sağlıyor.

- Verdiğim kod örneğinde de Authorization headerinde göreceğiniz type ve token kullanılıyor ki bu veritabanı erişiminize müsaade almış mısınız teyit için. 

- Servis Key için JSON nereden üretilir olası sorusuna ilişkin cevabım da iki yerden yapabilirsiniz. Birincisi Google Developer Console, diğeri ise direkt Firebase Console üzerinden "Project Settings" kısmındaki "Service Accounts"  sayfasından üretebilirsiniz.

pxaxsprqwjjebxotq6lp.gif
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  [ÇÖZÜLDÜ]Firebase Bearer Token Alma shooterman 8 3.577 05-12-2023, Saat: 12:17
Son Yorum: shooterman
  google translate 3000 karakter sınırını kaldırma delhici 2 2.381 14-03-2023, Saat: 00:45
Son Yorum: delhici
  Google Kişiler API MosCom 0 975 21-09-2022, Saat: 15:21
Son Yorum: MosCom
  Google Translate ikurt07 1 1.428 12-09-2022, Saat: 14:14
Son Yorum: hi_selamlar
  Hızlı çalışan server Firebase, Udp, Tcp, MQTT 41linea41 5 2.993 18-06-2022, Saat: 11:46
Son Yorum: 41linea41



Konuyu Okuyanlar: 1 Ziyaretçi