“Hiç uğraşamam…”
Şu sıralar her ne kadar boyumdan büyük bir iş olsa da, Twittell gibi hoş bir isim verdiğim, Linux için Twitter istemcisi olacak bir uygulama üzerinde çalışıyorum. Aslında çalışıyorum demem doğru olmaz çünkü üniversite kayıt işlemleri 2 haftamı aldı götürdü diyebilirim. Herneyse…
Şimdi basit bir örnek vererek OAuth’a değineyim. Farz edin ki, Twitter.com, FriendFeed.com gibi servisler için bir istemci uygulaması yaptınız. Son kullanıcı uygulamanıza kullanıcı adını ve şifresini girerek geleneksel yetkilendirme ( basic authorization ) yapılıyor ve API’lere erişim hakkı tanınıyor. İşte OAuth’un can alıcı noktasını burada fark edebilirsiniz, “kullanıcı neye güvenerek istemci uygulamaya kullanıcı adı ve şifre gibi özel bilgilerini versin?”
Tahmin edebileceğiniz gibi, OAuth’da son kullanıcının özel bilgileri ile hiçbir şekilde muhattap olmuyorsunuz. Kullanıcı, yetkilendirmeyi istemcinin API’sini kullandığı servis üzerinden yapıyor. Böylece, son kullanıcının özel bilgilerine sahip olmamış oluyorsunuz.
Olay istemci tarafında şu şekilde gerçekleşiyor, API’sini kullanacağınız servise kendi uygulamanızı kayıt ettirerek tanıtıyorsunuz. Servis size iki adet anahtar ( Consumer Key, Consumer Secret ) veriyor. Bu anahtarların ne işe yaradığını ilerki satırlarda anlayacaksınız.
Sonrasında bu anahtarları kullanarak, kullanıcının servis üzerinde giriş yapmasını sağlamak amacıyla, servisten “oauth token” (Token Key, Token Secret) anahtarlarını istiyorsunuz. Elde ettiğiniz oauth token anahtarları ile, kullanıcıyı servise yönlendirip giriş yapmasını ve uygulamanıza servisin API’lerini kullanabilmesi için gereken yetkiyi vermesini istiyorsunuz. Artık son adıma yaklaşıldı. Kullanıcı giriş yaptıktan sonra, kendisine twitter.com’un tanımıyla bir Pin kodu ya da friendfeed.com’un tanımıyla bir “Remote” kod veriliyor. Bu kod ismteciye verilerek ( web tabanlı uygulamalarda geri dönüş adresi “callback url” kullanıldığından dolayı, bu adımı bir nevi atlamanız gerekiyor ) “oauth_verifier” parametresi ile doğrulama amaçlı kullanıyor ve son olarak, artık uygulamamızın için kullanıcının kullanıcı adı ve şifresi yerine geçen, sadece servisin izin verdiği alanlarda kullanabileceğimiz, son anahtarları ediniyoruz. Kısaca, artık bizim için o kullanıcının, kullanıcı adı ve şifresi o anahtarlar.
Son olarak anlatılacak şey, “Consumer Key” ve “Consumer Secret” anahtarlarının ne işe yaradığı. Tahmin edebileceğiniz gibi, bu anahtarlar, son kullanıcının özel bilgileri yerine geçen anahtarların doğrulanmasında, deşifre edilmesinde kullanılıyor. Yani, elde edilen kullanıcı adı ve şifre yerine geçen anahtarlar başka bir şahıs tarafından ele geçirildiğinde, herhangi bir işe yaramıyor, çünkü bu anahtarlar doğrulanırken “Consumer Key” ve “Consumer Secret” anahtarlarına ihtiyaç duyuluyor.
Ben Twittell adlı uygulamamda kullanmak üzere TwittellOAuth adında bir sınıf yazdım. Sınıfı aslında uygulamamda rahatça kullanabilmek için kendime göre yapılandırdım, genel kitleye hitap edecek bir yanı yok diyebilirim. Ancak siz de twitter.com apilerini kullanan bir uygulama yapmayı planlıyorsanız, oauth yetkilendirmesi için TwittellOAuth sınıfını kendinize göre düzenleyerek ya da düzenlemeden basitçe kullanbilirsiniz.Örnek kullanımı şu şekilde:
TwittellOAuth ve OAuth sınıfı indirmek için tıklayınız.
Bitirirken…
Ben OAuth’u yeterli seviyede ingilizce bilgisine olmadığımdan dolayı, bir çok örnek kodları inceleyerek öğrendim. Sizler oauth.net adresinden daha düzgün ve daha detaylı bir belge okuyarak kolayca bilgi sahibi olabilirsiniz.
Ayrıca burda vermiş olduğum, TwittellOAuth sınıfını ve örnek kullanımını henüz denemedim.Oluşan hatalar sonucunda beni bilgilendirirseniz çok sevinirim.
Twittell adlı uygulamayı yayınladıktan sonra, kısmet olursa oauth’un sunucu tarafında kullanımını inceleyen bir yazı yazmayı planlıyorum, bunun da haberini vermiş olayım
Tags: oauth, TwittellOAuth
Posted in Python · Eylül 6th, 2009 · Comments (2)
Eylül 6th, 2009 at 13:21
Umarım bir an önce bitirirsin.
Eylül 6th, 2009 at 17:40
Yakın zamanda inş. kardeşim.