В предишната публикация ви разказах как с помощта на GeoLocation API можете да установите местоположението на потребителя. В тази публикация ще се опитам да ви разкажа как се справих със следващата стъпка към създаването на приложение за FourSquare.
Както всяка уважаваща себе си услуга за гийкове, и FourSquare предлага API, за да могат разни асоциални разработчици да прекарват свободното си време в създаване на безполезни приложения. Първо започнах от различни описания на oAuth. Както може би знаете, това е начин потребителите да разрешат достъп на външно приложение до профила им в дадена услуга без да предоставят името и паролата си на приложението. От гледна точка на потребителя процеса е доволно прост – потребителя бива препратен към сайта на услугата, където след като се аутентикира и разреши достъп на приложението, бива препратен обратно към сайта на приложението. Обаче гледната точка на разработчика, прилагащ на практика механизъма, нещо не ми стана достатъчно ясна.
Въпреки, че изчетох доста текст за oAuth, а API-то на FourSquare не е висша математика, накрая просто използвах готова библиотека. Като начало реших, че най-лесно и бързо ще реша проблема със same domain policy като напиша прокси-скрипт. За него няма да пиша подробно, доста е грозен, но за сега работи. Използвах ето тази библиотека за връзка с API-то на FourSquare. При правенето на скрипта исках да избегна нуждата от база данни – едно, че исках да е възможно най-прост, и второ, че не желая да се занимавам със съхраняване на данни. По тази причина и защото не можах да схвана значението и смисъла на параметрите, с които борави oAuth (за това спомогнаха неясните за мен примери, в които с едни и същи имена бяха кръстени очевидно различни параметри), реших като начало да разчитам на сесиите в PHP. Неудобството беше, че при всяко рестартиране на браузъра аутентикацията трябва да се извърши наново. Съществената особеност е, че oAuth API-то на FourSquare предлага(ше) възможност потребителя автоматично да бъде пренасочен обратно към приложението, ако вече веднъж е разрешил то да достъпва данните му. Така след първия път, когато трябва да напише потребителското си име и паролата в сайта на FourSquare, потребителя страда само от малко пренасочвания. На Стоян няма никак да му хареса, но пък така не се налага прокси-скриптът ми да пази oAuth токените на потребителя в база данни.
Всъщност преди две седмици изтеглих нова версия на библиотеката, която вече работи с новата версия 2 на FourSquare API, при което естествено се наложи да пренапиша почти изцяло всичко. В примерите обаче след като завърши процеса на oAuth аутенкикация параметърът, достатъчен за по-нататъшната работа беше един и се запазваше като бисквитка. Е, щом в примерите е така, прецених, че и аз мога да постъпя по същия начин и потребителите (аз!) няма да се налага да чакат досадните препращания при първоначалното зареждане на приложението. Освен това добавих малко по-добро обслужване на грешки (е, има още какво да се желае).
И така, набързо скалъпих един доста грозен JavaScript, който след като определи местоположението на потребителя, извлича близките места от FourSquare и ги показва като списък. До името на всяко място поставих бутон, чрез който потребителя да се „чекира“ в това място. Използването на приложението е песен в сравнение на другите приложения за Symbian. Обаче за да го покажа на хората, не стига то да работи, кода трябва да е малко по-елегантен, че да не се срамувам от него. Трябваше ми нещо секси, и си спомнях, че Радо Станков вече ни е показвал нещо наистина възбуждащо. За това как го приложих обаче ще ви разкажа в следващата част.
Връзки:
Етикети: FiveCorners, Foursquare, oAuth
[…] как работи GeoLocation API в съвременните браузъри и как не се справих в разбирането на oAuth. В тази публикация ще се опитам да ви разкажа как […]