Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi
Ön Sipariş Talebinde Bulunan Üyelerimiz
Sipariş Talebinde Bulunan Üyelerimiz

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
[ÇÖZÜLDÜ] Google Calendar API Server tipi Erişim Metodu hakkında tecrübesi olan
#1
Merhaba.

Arrow  SON SÖZÜ BAŞTAN SÖYLEYELİM :
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol. Güncelleme yaparsam oradan son halini indirirsiniz. 
Şimdi burada paylaşılan kod sürekli eskiyecek.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol


- Biliyorsunuz herkesin telefonu akıllandı. Google API'leri sayesinde de kolaylık anlamında altın çağımızı yaşıyoruz.

- Çok seyahat eden birisi olarak THY'den uçak bileti alıyorum, hemen takvimime bu bilgi işleniyor. Herhangi bir izin vs. vermediğim halde.

- Geçenlerde SMS otomasyonuna bir eklenti hazırlarken aklıma düştü. Idea  Personelin eposta listesi elimde var, SMS'lerine görev düştüğünde POSTa hesapları üzerinden ( Google ) Takvimlerine de bu işlerin otomatik olarak işlenmesini sağlayabilir miyim diye düşündüm. 

- Böylece bir taşla iki kuş hesabı kolları sıvadım. Şu an bir Helper Class hazırladım ve sorunsuz çalışıyor. Şu sorunsalı (pek de sorun sayılmaz ama) çözer çözmez buradan da paylaşırım.

- Konu şöyle, API diyor ki 
(1) "https://accounts.google.com/o/oauth2/auth" linkine git, 
(2) Takvim Hesabını seç
(3) Uygulama Erişimi için "İzin Ver"
(4) Sonra sana bir AuthCode verceğim. Bu kodu al
(5) "https://accounts.google.com/o/oauth2/token" linkine giderken parametre olarak kullan 
(6) Sonra sana bir Access_Token vereceğim. Bu kodu sakla. Bir daha AUTH olana kadar bunu şu kadar zaman içinde kullanabilirsin.

Neler yapabiliriz, Takvime yeni EVENT ekle, mevcut EVENT'i sil, değiştir, rengini değiştir, Eposta bildiğin kişilerle eklediğin toplantı/görev ne varsa paylaş bunun koyu ve altını çizerek yazdım; eşimin, oğlumun, benim epostasına bağlı takvime ve dolayısıyla senkron telefonların takvimine hiç bir ses uyarı vermeden otomatik olarak işlendi. 

- Şimdi bu kadar yazdım, asıl sorunsala geleyim : API referansında SERVER'dan SERVER'a erişim imkanı var diyor. Böylece araya Kullanıcıdan şu (3) nolu sıradaki "Uygulama için izin ver" can sıkıcı kısmını geçebildiğimiz ifade ediliyor. Sonra da gördüm ki bunu kapatmışlar G+ için paralı mı yapmışlar nedir sonuç hüsran.

- Bu konuda bilgisi görgüsü olan varsa paylaşırsa sevinirim. Smile  

- Yazılımı kendim kullanıyor olsam, her projeyi açtığımda ( günde bir kere ) WebBrowser ile açtığım ekrana "İZİN VER" butonuna bir kere tıklayıversem bir tarafım eksilmez. 

razqnftadbh4aaavuvwa.png

s7aaxupvfqxecral71q3.png
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#2
Çok Mantıklı , Beleşe Mail Smile
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#3
Bir ekleme yapayım. Maksat/sorun WebBrowser içerisindeki butona basamamak kesinlikle değil

Asıl maksat WebBrowser'i tümüyle devre dışı bırakıp sadece Indy seti ile arka fonda işlemi tamamlamak. Idea

Hatta bir kod örneği vereyim WebBrowser'da ID'si bilinen Butona basan kod örneği (meraklısına diyerek)
function ButonaBas( WebBrowser:TWebBrowser; strButtonId: String ):boolean;
Var
 i : Integer;
begin
 Result := False;
 if NOT Assigned(WebBrowser.document) then Exit;

 if WebBrowser.OleObject.Document.all.tags('button').length > 0 then
 begin
   for i := 0 to WebBrowser.OleObject.Document.all.tags('button').length-1 do
   begin
     if WebBrowser.OleObject.Document.all.tags('button').item(i).id = strButtonId then
     begin
       WebBrowser.OleObject.Document.all.tags('button').item(i).click;
       Result := True;
     end;
   end;
 end;
end;

Bu Google Takvim Ekranı İzin Butonunun ID'si ( submit_approve_access olarak geçiyor )için Kullanımı
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
  if ButonaBas( WebBrowser1, 'submit_approve_access' )
    then ShowMessage( 'Buttona bastık' )
    else ShowMessage( 'Button nerede göremiyorum....!!! ');
end;


Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#4
Sorunu TWebBrowser'in etrafından dolanarak çözdüm arkadaşlar. 

- Biliyorsunuz WebBrowser'ın Visible özelliğini veya üzerinde olduğu panel vb. visible özelliği kapalı olduğunda sayfayı RENDER etmiyor oluşundan sürekli görünür halde bırakıp ekranın sınırlarının dışında bir yerlere taşıyarak gizlemek veya önüne başka panel koyarak gizlemek yoluna gidiyorduk.

- Sorunum, bir yandan bu bahsettiğim VISIBLE olayı ve diğer yandan da Delphi STARTER edition'larda WebBrowser olmayışı, dolayısıyla hazırladığım HELPER CLASS sınırlı kalır endişesiydi.

(1) Şöyle ki, CreateOleObject('InternetExplorer.Application') ile bir Explorer penceresini kendim create edip Visible özelliğini FALSE ederek arka fonda işlem yapması sağlamak geldi aklıma ve kolları sıvadım. 

(2) Yukarıdaki verdiğim örneğin benzeri bir teknikle İZİN butonuna basıldı ve kod alındı. 

(3) Gerisi Indy bileşen setinin erişebildiği şekilde yürüdü. 

(*) Tek bir şey zorladı, Bendeki IdHttp setinde GET, POST, PUT var ama DELETE metodu olmadığından bir de bunun eklenmesi gerekti. (EVENT silmek için protokol böyle) Sonuç başarılı.

Şimdilik projeye ayırdığım süre bu kadar. Şimdilik esen kalın.  Smile
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#5
Örnek projeyi yada kodları paylaşabilirmisiniz?
Cevapla
#6
İlk mesajımda da belirttiğim üzere paylaşırım.  Smile
Daha önce ilgilenmişsen bildir, buradan blok kodlarla eksik kısımlarında yardımcı olayım. 

Tecrübe ettin mi bilmiyorum ama Class Unit oluşturmak kurgusu basit ama mantığı normale göre biraz zordur. 

Bu projeden bahisle örnek vereyim 
(1) OpenSSL DLL'lerini RESOURCE'a koysam mı yoksa kullanıcıya mı bıraksam şeklinde karar vermem lazım. Çünkü lisans sorunu doğurur. Ayrıca XE ile derlersen başka OpenSSL DLL'leri, Delphi 2007 ile derlersen başkası. 

(2) Bu SSL kütüphanelerinin Windows TEMP klasörüne kopyalanması ve oradan çalıştırılması için DLL Path yönlendirilmesi lazımdı.

(3) Indy bileşen setinin her Delphi sürümündeki Indy paketinde çalışacak şekilde uyumlu hale getirilmesi gerekiyor.

(4) "izin ver" butonu en son aşama idi. Bir de kullanıcının bilgisayarında hesap kurulu değilse, hesap için "eposta/password" LOGIN işlemleri yaptıktan sonra "OAuth" aşamasına geçmesi gerekiyor. Dolayısıyla Class'ın ihtimaller çerçevesinde davranacak şekilde biraz daha akıllı olması lazım.

(5) API'nin parametrelerinden sadece ihtiyacım olanı mı yoksa bütününü mü ihtiva etmeli kararı vermek lazım.

(6) Bu konuda internette araştırdım. TMS VCL Cloud Pack (ücretli) , Google Calendar API for Delphi (bağlı çalışan internet suite için ücret istiyor),  Astonsoft Google Calendar Delphi Component (ücreliIdea

Bu çerçevede kimsenin ayağına basmadan bir çözüm bulmak lazım. Yani iki farklı CLASS oluşturacağım gibi görünüyor. İlki kendi kullanacağım versiyon ki şu an onu kurguluyorum, ikincisi burada paylaşmak için DLL ve lisans sorunundan arındırılmış versiyon. Exclamation
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#7
Merhabalar bunu component kullanmadan mı yapmaya gerek duydunuz yani size özel olarak bir şey olsun diye mi çünkü bununla ilgili 2-3 tane firma var ve verdikleri google api componentler gayet başarıldır
WWW
Cevapla
#8
Firma derken detay verir misiniz ? 
Buraya örnek hazırlamaya uğraşıyordum, gerek kalmadığına sevindim. Smile
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#9
Merhabalar

1. TMS VCL/FMX Cloud Pack

2. CData FireDAC Components for Google Calendars

3. Astonsoft Google Calendar Delphi Component

4. n.Software Google Integrator
WWW
Cevapla
#10
Merhabalar zaten bunları Google taraması ile bulabiliyoruz. Ücretsiz çözüm sunacaksınız sanmıştım.

1. TMS VCL/FMX Cloud Pack - Ücretli
2. CData FireDAC Components for Google Calendars Delphi Lisansı ile Ücretli (Starter sürümünde yok)
3. Astonsoft Google Calendar Delphi Component (C*r*k ürünler karşılaştım ücretli demek ki)
4. n.Software Google Integrator ( über ücretli gerisini siz anlayın )
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Google Drive Authentication karex 3 334 18-10-2018, Saat: 23:10
Son Yorum: theSinan
  [Çözüldü] Otomatik artan alan değerlerini sıfırlama Lord_Ares 4 138 17-10-2018, Saat: 08:54
Son Yorum: esistem
  DataSnap Server Uygulaması yhackup 5 165 15-10-2018, Saat: 21:33
Son Yorum: Fesih ARSLAN
  JSON Bilgi Talebi, RAD 10 Seattle Yeni JSON Özellikleri Hakkında eroniko 4 188 13-10-2018, Saat: 21:59
Son Yorum: eroniko
  [ÇÖZÜLDÜ] Query ismini değişken olarak göndermek Lord_Ares 14 348 12-10-2018, Saat: 12:33
Son Yorum: Lord_Ares



Konuyu Okuyanlar: 1 Ziyaretçi