Wpis z mikrobloga

#javascript #webdev #nodejs

Wykopki, mam pytanko. Mam aplikację SPA która działa niezależnie od backendu, tzn. pobiera sobie tylko dane z api.

Problem jest tego rodzaju że mam pewną sytuację w ktorej muszę przejść na prawdziwą podstronę API (logowanie oauth do serwisu społecznościowego). Tzn. user kliknie w guzik logowania i ja wykonuje wtedy window.location.href = 'http://spolczenosciowka.com/login/?redirectuUrl=http://moj-backend.com/on-auth'; użytkownikowi pojawia się stronka społecznościówki z logowaniem , uprawnieniami , "czy wyrażasz" i po akceptacji przekierwouje usera na stronę:

http://moj-backend.com/on-auth?token=xyzabcdefghi ; ta strona robi czynności związane z rejestracją, pobraniem danych użytkwonika z tej społecznościówki i redirectuje go z powrotem na index.html czyli entry point mojej aplikacji SPA.

Problem polega na tym że powracając do tego index.html muszę wepchnąć tam dane odnośnie konta użytkownika w moim serwisie, tzn. jakiś tam autoryzacyjny token do konta żebym mógł wiedzieć że "on" to "on".

Pytanie brzmi, w jaki sposób to przekazać? Index.html to statyczny plik z układem i javascriptami frameworka SPA a muszę jakoś tam "wrzucić" access token. Jedyne na co wpadłem to żeby przekazać to przez query string, tj.

http://moj-backend.com/index.html?accessToken=qqqqqqqq , i potem po stronie frontendu sparsować URI i sprawdzić czy jest taki parametr query stringa jak 'accessToken'. Ale to rozwiązanie mi się nie podoba, takie doklejanie tokena do paska adresu, więc zapytam może znacie jakieś inne bezbolesne możliwości uczynienia tego?
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@epi: właśnie o to chodzi że logowanie "klasyczne" typu email/haslo to banał bo po prostu do api puszczam te dane a api zwraca mi jakiśtam access token.

ale tutaj mam do czynienia z logowaniem przez serwis społecznościowy (np. facebook, twitter, instagram, g+) i tam logowanei polega na tym że przekierowujesz usera na strone tej społecznościówki z jakimś specjalnym adresem i w URI podajesz url zwrotny. jak użytkownik się zaloguje to
  • Odpowiedz
więc zapytam może znacie jakieś inne bezbolesne możliwości uczynienia tego?


@larvaexotech: u mnie zawsze wiazalo sie to z utworzeniem sesji na serwerze (i zdaje sie bez tego oauth raczej ciezko...) - wiec zwyczajnie na poczatku SPA odpytywalo sie endpoint o dane z sesji i tyle
  • Odpowiedz
@larvaexotech: Nie rozumiem potrzeby przekierowania na backend, zrób wszystko po stronie frontendu, społecznościówki mają do tego api/sdk. Jak używasz angulara albo czegoś innego to na 100% jest do tego już biblioteka, service czy co innego. W metodach dostajesz token który potem możesz przekazać do backendu albo wyciągnąć dodatkowe dane i dopiero wtedy przekazać do backendu.

https://developers.facebook.com/docs/facebook-login/web
  • Odpowiedz
@dikamilo: chodzi o Instagrama i tam zalecają jednak żeby przez backend to robić więc robie to zgodnie z zaleceniami :P

pozatym kiedyś jak integrowałem FB to mam przykre doświadczenia z javascriptową autoryzacją na urządzeniach mobilnych (na 3 telefony z androidem i tą samą przeglądarką na dwóch popup nie działao a na jednym działał).
  • Odpowiedz