2012-05-25 26 views
7

Użytkownicy mojej aplikacji Rails może uwierzytelnić w jednym z tych 2 sposobów:Uwierzytelnianie za pomocą Facebooka poprzez Rails API

  • Korzystanie swoje konto Facebook
  • Wykorzystując własne uwierzytelnianie

używam Facebook SDK na Androida i devise i omniauth na Railsach.

Jak mogę uwierzytelnić się w mojej aplikacji Rails na Androida, aby móc pobierać potrzebne informacje z serwera?

NB: Zauważyłem, że to pytanie ostatnio uzyskało dużą liczbę wyświetleń. Proszę nie stosować się do zaleceń podanych w tym wątku zbyt uważnie - sieć porusza się szybko i pochodzi sprzed 3 lat!

Odpowiedz

2

Można to zrobić za pomocą gem fb_graph (nie fbgraph!).

można po prostu dodać go do gemfile i zrobić

user = FbGraph::User.me(token).fetch 

gdzie token jest tokenu OAuth masz za pomocą, na przykład Facebook SDK na Androida. user.email będzie adresem e-mail użytkownika (jeśli ustawisz niezbędne uprawnienia).

Można użyć tego adresu URL do testowania:

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=token 
+1

Po prostu zauważ, że ta odpowiedź zwróciła uwagę. Pamiętaj, że było to 2,5 roku temu i od tego czasu wiele się zmieniło. Uważaj na to, co z tego bierzesz! –

0

To całkowicie zależy od działania systemu uwierzytelniania. Będziesz musiał utworzyć interfejs API na swoim serwerze, aby obsługiwać komunikację z aplikacji Android i przekazywać informacje między nimi za pomocą interfejsu API.

+0

używam opracować i omniauth, to dość dużo, jak to działa. Po stronie Androida korzystam z pakietu SDK Facebooka. –

+0

Pakiet SDK Facebooka będzie autoryzowany tylko przez Facebooka. Musisz utworzyć bibliotekę Androida, która będzie uwierzytelniana w Twojej witrynie Rails. Jest to jedyny sposób bezpiecznego odzyskania informacji z serwera. –

+0

Mój serwer uwierzytelnia się przez Facebook za pomocą Omniauth.Zastanawiam się, czy mogę użyć zestawu SDK Facebooka, aby zalogować użytkownika, a następnie wykonać polecenie "GET" na "users/auth/facebook", aby użytkownik mógł być również uwierzytelniony na moim serwerze. (czy to jest mylące?) Napisałbym je, gdybym nie mógł się wytłumaczyć) –

0

Niraj Shah ma całkowicie rację, chociaż odpowiedź może nie być dla ciebie wystarczająco szczegółowa. Aby uzyskać szczegółową odpowiedź na swoje pytanie, spójrz na numer Securing an API railscast by Ryan Bates, który został niedawno wydany. Obejmuje on HTTP Basic Auth.

Możesz również chcieć rzucić okiem na bardziej zaawansowaną opcję zabezpieczenia swojego interfejsu API/zapewnić zarejestrowanym użytkownikom dostęp do ich danych. Jest też railscast na ten temat: http://railscasts.com/episodes/353-oauth-with-doorkeeper - chociaż jest to pro odcinek, więc musisz go zarejestrować, aby go obejrzeć.

+0

Dzięki za linki. Używam jednak narzędzia programistycznego, a nie wbudowanego protokołu HTTP. –

+0

Uwierzytelnianie interfejsu API jest oddzielone od uwierzytelniania użytkowników! Możesz teoretycznie wysłać nazwę użytkownika/hasło (lub dostawcę + uid - lub cokolwiek innego, co możesz użyć, aby jednoznacznie zidentyfikować użytkownika) z każdym żądaniem do API i uwierzytelnić się wobec niego. Jest to jednak zły styl (a jeśli to zrobisz, upewnij się, że używasz SSL!). Uwierzytelnianie za pomocą tokenów takich jak OAuth jest drogą do zrobienia. – emrass

+0

OK, opracuj wsparcie oparte na tokenie, spróbujesz przełączyć się na to. Nadal nie rozumiem, jak powinienem autoryzować użytkownika, który loguje się na Facebooku. –

0

Francisco, mam dokładnie tę samą potrzebę.

Scenariusz tworzenia przy użyciu token_authenticatable wydaje się prosty i nie powinien stanowić problemu, ale nie jestem pewien, jak najlepiej sobie z nim poradzić. Po stronie internetowej, dla uwierzytelnienia FB używam omniauth-facebook, jak udokumentowano tutaj: https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview. Myślę, że to wykorzystuje OAuth z FB jako dostawcą, więc jest dobrą możliwością, że najnowsze RailsCast o odźwierniku zabezpieczającym API za pomocą OAuth powinno załatwić sprawę. Nie próbowałem tego jeszcze, ale zrobię to wkrótce, chyba że mnie do tego pobijesz. Oto link: http://railscasts.com/episodes/353-oauth-with-doorkeeper.

+0

Hej. Niedługo opublikuję odpowiedź na moje własne pytanie dla dobra wolnej woli. Musisz użyć gem'a 'fb_graph' (nie' fbgraph'!). Następnie możesz po prostu dodać go do swojego gemfile i zrobić polecenie 'user = FbGraph :: User.me (token) .fetch', gdzie' token' jest tokenem oauth, którego używasz, na przykład, w pakiecie Facebook SDK na Androida. 'user.email' będzie miał adres e-mail użytkownika (jeśli ustawisz niezbędne uprawnienia). Nie wahaj się ze mną skontaktować, gdybym nie był jasny. –

+0

Do celów testowych można użyć 'irb' i' GET' tej strony: https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=https://www.facebook.com/connect/login_success. html & response_type = token Jeśli ci się uda, zostaniesz przekierowany do URI z tokena dostępu. Następnie możesz użyć tego tokena w sposób opisany powyżej. –

+0

świetnie, to zadziała, dzięki! –

Powiązane problemy