Opracowałem prosty interfejs API, aby umożliwić komunikację między aplikacjami mojego Androida i iPhone'a a moim serwerem. W mojej aplikacji, użytkownicy muszą uwierzytelniać się i robią to przy użyciu poświadczeń login/hasło przy następnym wywołaniu API:Facebook Połącz, aby uwierzytelnić się na osobistym API
http://api.myapp.com/login?user=xxx&pass=pass
aplikacja odbiera w zamian:
{ "api_token": "xxxx-xxxx-xxxx-xxxx" }
Więc w zasadzie mogę wymienić moje poświadczenia przeciwko api_token
.
Chciałbym dodać wsparcie dla Facebooka. Z powodzeniem skorzystałem z pakietu SDK Facebooka i otrzymałem poprawną access_token
.
Jednak trzeba zaimplementować mechanizm wymiany access_token
z api_token
Zakładając, że użytkownik ma już podłączone jego konto z Facebook (na swoim panelu użytkownika WWW), co byłoby najlepszym realizacja przystąpić do wymiany ?
Oto scenariusz, że jestem zaniepokojony: App A przejmuje token dostępu fb dla użytkownika z uprawnieniami X. App odwiedza swój URL logowania na 'http://api.myapp.com/login/facebook ? access_token = ... ' Ponieważ masz teraz token dostępu, który uzyskała aplikacja A, masz teraz taki sam dostęp do użytkownika jak on, bez pozwolenia użytkownika, który to zrobił (oni" ve przyznano tylko uprawnienia do aplikacji A). Chociaż widzę, że jest to możliwe do obrony na wiele sposobów, nadal wydaje się, że jest ono błędne i potencjalnie stanowi naruszenie zaufania użytkownika. Co sądzisz? –
Cóż, tak, masz rację, ale o ile mi chodzi, jesteśmy "App A". IMHO, jest to to samo, co użytkownik subskrybujący nasz biuletyn: możemy spammować użytkownika lub sprzedać e-mail do wielu stron trzecich, ale nie jesteśmy, ponieważ jesteśmy odpowiedzialną firmą (z odpowiedzialnością prawną) – EricLarch