[]

PHP ile access token'la erişilir api geliştirmek

boktan yazdığımın farkındayım.

api'lere daha önce çok bağlandım ancak hiç api yazmadım. haliyle authentication hakkında çok bilgim yok. biraz bilgi edinebilmek için kendime basit bir api yazmak ve üstünde oynamak istiyorum.

sormak istediğim soru ise olabilecek en beginner soru;
api tarafında çalışır bir access token nasıl üretiliyor? neye göre hangi şartlara göre?

kullanıcı bilgileri ile login oluyor.
ben ona access token tanımlıyorum --> bu access token neye göre tanımlanıyor, neler içeriyor. veritabanında kullanıcı bölümünde "access_token" sütunu açıp kalan işlemleri o eşleşmeye görem i yapmak gerekiyor.
php tarafta access token'ı neye göre ne amaçla refresh etmek gerekiyor ve kullanıcıdan gelen token'ı neye göre eşleştiriyoruz.

vs. vs.

en basit seviye anlatabilriseniz veya bir ders önerebilirseniz baya makbule geçer.

 
ben kendi yazdığım web servis'i anlatayım umarım faydası olur.

bağlanmak isteyen her kullanıcı için Api Key ve Secret Key adında 2 alan oluşturuyorum. Api key'i header a eklerken, secret key'i ise post etmek istediğim verileri şifrelemek için kullanıyorum.

Örnek olarak: post edeceğim veriler;

{ id: 5, text: xxxxxxx } olsun bu veriye ek olarak o anki zamanın timestamp'ini (şiömdilik 12345678 olsun) da verilere ekliyor ve http_build_query ile "id=5&text=xxxxxxx&date=12345678" olarak çevirip daha sonra bana verilen secret_keyi kullanıp sha256 ile şifreliyorum ve oluşan şifrelenmiş eriyi signature değişkeni ile post edeceğim verilere ekliyorum. son durumda post ettiğim veriler şunlar oluyor;

{ id: 5, text: xxxxxxx, date: 12345678, signature: xyxyxyxyxyxyx }

server tarafında ise gelen post isteğindeki api key i alıp veritabanında var mı diye kontrol ediyorum. eğer var ise gelen post verileri içerisinde signature hariç diğerlerini veritabanında api key in sahip olduğu secret key ile şifreliyorum. daha sonra da post edilen signature ve benim oluşturduğum signature aynı mı diye bakıyorum. aynıysa bir problem yok, değilse hata mesajı gönderiyorum.

yukarı yazmayı unuttum ancak date i kullanmamın amacı da date eğer şuanki zamandan örnek vermek gerekirse 4 saat daha önce oluşturulmuş ise yine tekrar hata döndürüyorum. tarihi geçmiş daha önce oluşturulan bir post isteği olabilir diye.

umarım anlatabilmişimdir =)
  • amour fou  (11.05.18 18:18:34) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.