Api nedir? Geliştirdiğimiz uygulamada farklı uygulamanın özelliklerini kullanmamıza olanak sağlayan yapıdır. Örneğin web sitemde lokantamın konumunu göstermek istiyorum. Google’ın maps apisi kullanılarak lokasyonu gösterebilirim. Api nedir? hakkında daha detaylı bilgi için buradaki api nedir? yazısını okuyabilirsiniz. Makaleyi okuduktan hemen sonra burada tekrar buluşalım 🙂
Api key nedir? Api yi kullanmamız için gereken anahtardır. Geliştirdiğimiz uygulamamızdan, kullanacağımız sisteme api key ile erişim sağlarız. Bu sayede erişim sağladığımız sistem bizim uygulamamız hakkında bilgi toplamış olur. Bunlar, geliştirdiğimiz uygulamadan kaç kere api tarafına erişilmiş veya istek atılmış, api erişim limiti varsa limit, aşılmış mı? Google veya her hangi api hizmeti eğer api key kullanıyorsa bu api key sayesinde erişim limitlemesi gibi kontroller sağlayabilir. Geliştirdiğiniz uygulamanızdan apiye erişim ile ilgili bilgileri toplayabiliyor. Sonrasında apiye erişimini engelleyebiliyor veya geliştirilen uygulamadan kaç kere erişim sağlamışsın bunların analizini görüntülenebiliyor.
Örneğin kendi uygulamamızda Google Maps Apisini kullanarak haritaları görüntülemek istiyoruz. Üretmiş olduğumuz api key ile yaptığımız isteği Google görüntüleyebilir çok fazla sayıda istek yapılmışsa engelleyebilir aynı zamanda Api key’e kısıtlama getirerek farklı platformdan Api’ye erişim engellenebilir. Kısaca hem Google tarafından hem bizim tarafımızdan Api key güvenlik önlemidir.
OAuth nedir? Kullanıcıya oturum açtırarak doğrulama şeklidir. Bu doğrulama sayesinde geliştirici kişilerin bilgilerine onlar izin verdiği sürece erişim sağlayabilir. Herhangi bir web sitedeki Facebook ile giriş yap OAuth doğrulamaya en basit örnektir.
Nasıl çalıştığını kısaca anlatayım. Eğer uygulama üzerinden kişisel bilgilere erişmemiz gerekiyorsa (Facebook resimlerin mesajların, Youtubede yaptığın yorumlar video izleme geçmişi vs vs) gibi herkese açık olmayan senin kullanıcı adı şifrenle giriş yaparak görüntülediğin bilgilerini api üzerinden görüntülemek istiyorsan OAuth kullanman gerekir. Örneğin başka sitelerde gördüğümüz Facebook ile giriş yap butonu buna örnektir. O butona bastığımızda karşımıza bir ekran açılarak kullanıcı bilgilerimizi gireriz ve izin verdiğimiz bilgiler doğrultusunda giriş yaptığımız web site o bilgilere erişir.
Birde resimdeki yapıyı inceleyelim. Resimde kullanıcı bizim uygulamamız üzerinden Facebook ile giriş yap butonuna tıklar ve izin alma(Authorizantion) işlemi için Facebook sayfası açılır (Facebook burada bir örnek) açılan sayfadan giriş yaptıktan sonra api de belirlenen callback url dediğimiz belirlenen linke yönlendirme işlemi gerçekleşir. Burada callback url’e dönerken bir key ile birlikte döner ve biz bu keyi Access Tokene dönüştürürüz. Daha sonrasında işler basit, oluşturduğumuz access token ile istek yapar cevabı alırız.
Google Api Key Nedir? Nasıl Alınır?
Önce Google Api Key nedir sorusunu cevaplayalım. Console Google sayfasından bir api etkinleştirdiğimizde ve bu etkinleştirdiğimiz apiyi kullanırken kodların arasında yourapikey kısmına yazacağımız anahtardır.Yani Google api hizmetlerini kullanabilmek için Google api key’e ihtiyacımız var. Google bu key sayesinde kimlerin api hizmetine eriştiğine bakar ve her kişinin istek sayısı kontrol için günlük limitinin altında kalmasını sağlar. Google Api key i almak için öncelikle gmail hesabına sahip olmamız gerekir. Gmail hesabımızı açıktan sonra https://console.developers.google.com sitesinden uygulamamıza uygun yeni bir proje oluşturarak Google api yi alabiliriz.
OAuth Nedir ?
OAuth, kullanıcıların üyesi oldukları bir site yada platformun şifresini üye oldukları başka bir web sitesi yada platformla paylaşmadan, izin verdiği bilgilere diğer site tarafından ulaşılmasını sağlayan bir kimlik doğrulama protokolüdür.
Burada protokol kelimesinin altını çizmek istiyorum. Zira OAuth’u bir yazılım yada kütüphane olarak görmek çok yanlıştır.Yani aslında OAuth yukarıda tanımını yaptığımız işlem ile ilgili adımlar ve kurallar bütünüdür. Örneğin HTTP yada FTP birer protokoldür. Bu protokole uyarak yazılmış kütüphaneler ve yazılımlar birbirleriyle iletişime geçebilir. OAuth için de yazılmış hazır kütüphaneler ve yazılımlar mecvuttur.
Günümüzde artık dünya çapında kullanılan çoğu web sitesinin OAuth API desteği mecvuttur. Temel olarak hepsi aynı mantıkla çalışmaktadır. Bunlara örnek olarak; Yahoo BBAuth, Google AuthSub, Flickr API, Twitter API’yi sayabiliriz.
Aşağıda sırasıyla web sitenize OAuth API hizmeti veren bir sitenin API’sini nasıl entegre edeceğinizin adımları yer almaktadır. Buradaki adımlar Google veya diğer sitelerden herhangi birisi olabilir. Genel olarak sıralama aynıdır.
- İlgili siteden bir API Key alınır. API Key alırken sitemizin adını, alan adını ve bu alanın altında OAuth işlemini tamamlamada kullanılacak geri dönüş URL’mizi belirtiriz. Site bize işlemlerimizde kullanmak üzere bir API Key ve bir de Secret Key verir. Bunların yanında OAuth işlemlerimizi yaparken kullanacağımız, Request token, Access token ve Authorize URL olmak üzere 3 adet URL veriyor. Yani 5 adet parametremiz oluyor…Bu işlem site sahibi yada geliştiricisi tarafından yapılır.
- Request token URL’ye bir web isteği yaparak token ve token_secret anahtarlarımızı alıyoruz.
- Bu anahtarları ve Authorize URL’mizi kullanarak oluşturduğumuz OAuthLink ile hedef sitemize yönleniyoruz.
- Hedef site açıldığında üyemiz buraya karşı sitedeki kullanıcı adı ve şifresini güvenli bir şekilde giriyor. Burada üyemiz 1 numaralı adımda girdiğimiz Site ismimiz belirtilerek yetki vereceğimizi belirten bir uyarıyla karşılaşır.
- Kullanıcı adı ve şifremizi doğru girdikten sonra ilgili sitede oluşturduğumuz API’nin hangi bilgilere ne kadar süreyle erişmesine izin vereceğimizi belirterek kabul ediyoruz.
- Yine 1 numaralı adımda belirttiğimiz kendi sitemizdeki geri dönüş URL’mize yönleniri ve ipleri tekrar elimize alırız. Geri dönüş URL’mize yine bir Token ile dönüş yaparız.
- Bu aşamada geri dönüş URL’mizde QueryString olarak gelen Token ve Access token URL’mizi kullarak hedef siteye OAuth işlemini tamamlamak için son bir Web isteği yapıyoruz. Bu aşamada yaptığımız isteğe cevap olarak ilgili üyemiz için hedef siteden veri okuyup yada yazarken kullanacağımız token ve token_secret anahtarlarımızı alıyoruz. Bu anahtarları daha sonra kullanmak üzere kullanıcımızın profiline kaydediyoruz. Hedef site için her kullanıcımızın kendine ait token ve token_secret anahtarları olacak.
- Son olarak, hedef sitemizde yapacağımız işleme göre API_Key, API_Secret ve kullanıcımızın Token, Token_Secret anahtarlarını kullanarak web isteklerimizi yapıyoruz. Verileri okuyup yazıyoruz.
Cok tesekkurler.
Peki diyelimki API ile işimiz bitti… Nasıl iptal edeceğiz?
Ve API yi sadece spesifik bir kullanım için alıyorsam, başka bir hizmet için faturalandırılmam dimi?
Api ile işiniz bittiğinde kullandığınız api keyi (oauth için oauth kimliğini) ve kullandığınız api yi etkin durumdan pasif duruma çekmeniz erişimi engellemek için yeterli olacaktır.
Api anahtarı kısıtlama işleminde bir çok varyasyon bulunmaktadır. Bu kısıtlamalar da şunlar bulunur;
Http istekleri : örneğin http://www.ismaildursun.com sitesinden gelen istekler bu apiyi kullanabilir kısıtlaması.
IP adres kısıtlaması : Örneğin: 192.168.0.1, 172.16.0.0/12, 2001:db8::1 veya 2001:db8::/64 gibi ip adresleri girilerek ip kısıtlama işlemi yapılabilir.
Android uygulamaları : Sadece android uygulamadan yapılan istekler bu api keyi kullanabilir.
İos Uygulamaları : Sadece ios platformundan gelen istekler kullanabilir. Burada iosun paket kimliğini girmeniz gerekmektedir.
Bu yazdığım yöntemler gelen isteklerin kısıtlamaları ile ilgiliydi Birde api anahtarını kısıtlaması yapabilirsiniz. Bunda da kısıtlamak istediğiniz api anahtarından kullanmak istediğiniz api yi seçerek bu api anahtarı seçilen api yi kullanması için kısıtlama yapılır. Yani Youtube apisini kullanmak için oluşturduğum api keyi youtube apisini seçerek sadece youtube apisini kullanmasını sağlayabilirsiniz.
Ücretlendirme konusundan zaten kısıtlamaları siz belirlemektesiniz. Google faturalandırma yaparken api keyin kullanım sınırının aşımına bakmaktadır. Eğer düzgün kısıtlama yapmazsanız ve api key kullanım takibini yapmazsanız farklı kişiler tarafından api keyiniz kullanılarak kullanım karşığında faturanız kabarabilir takip etmekte fayda var. Birde Google’in oauth ve api key dışında farklı hizmetlerinde kullandığı farklı teknolojiler ve yapılar bulunmaktadır. Eğer spesifik kullanım için oauth veya api key kullanıyorsanız anlattığım gibi kısıtlamalara dikkat etmek zorundasınız.
İyi çalışmalar.