2016-03-23 35 views
8

Chcę zbudować poręcze api do logowania fb przy użyciu jonowego frameworka. Do tej pory udało mi się stworzyć aplikację bazową i pomyślnie uwierzytelnić się na Facebooku.Rails API dla logowania fb z Ionic

Teraz chcę zrobić to samo, ale z aplikacją opartą na jonach.

Pytania?

  1. Czy można napisać api Rails używając omniauth i używając api uwierzytelniania fb z jonowym.
  2. Jeśli jest (1) jest możliwe, niż jakiego rodzaju żądanie json ma być wykonane lub zwrócone.

Nie można znaleźć nic w Internecie na ten temat, ani żadnego projektu github szyn z ionic (logowanie fb).

mój bieżący kod:

Kontroler:

class SessionsController < ApplicationController 
    def create 
    user = User.from_omniauth(env["omniauth.auth"]) 
    session[:user_id] = user.id 
    redirect_to root_url 


    end 

    def destroy 
    session[:user_id] = nil 
    redirect_to root_url 
    end 
end 

Model:

class User < ActiveRecord::Base 
    def self.from_omniauth(auth) 
    where(provider: auth.provider, uid: auth.uid).first_or_initialize do |user| 
     user.provider = auth.provider 
     user.uid = auth.uid 
     user.name = auth.info.name 
     user.oauth_token = auth.credentials.token 
     user.oauth_expires_at = Time.at(auth.credentials.expires_at) 
     user.save! 
    end 
    end 
end 

inicjalizatory:

OmniAuth.config.logger = Rails.logger 
Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, "123", "abc" 
end 
+1

Myślę, że szukasz uwierzytelnienia po stronie klienta oauth2 (nieważne, omniauth, i zakładaj, że backend rails nie istnieje). http://blog.ionic.io/oauth-ionic-ngcordova/ –

Odpowiedz

0

Nie jestem pewien, jeśli jego możliwości ... ale myślę, że nie powinieneś używać tego ta sama logika.

Rails facebook omniauth flow jest oparty na sesjach, podczas gdy aplikacje jonowe są w większości oparte na "tokenie dostępu", np. Udostępniasz Rails API z uwierzytelnianiem.

Ponadto, w Jońskim masz pewne zalety: możesz uzyskać dostęp do macierzystego Facebooka Zaloguj się przy użyciu Ionic Native Facebook Connect Plugin, który zapewnia lepszą wygodę użytkownikom, którzy zainstalowali Facebooka.

Miałem ten sam problem i po zakończeniu pracy najpierw zrozumiałem, w jaki sposób działa uwierzytelnianie dla pojedynczych aplikacji. W tym celu polecam przeczytać "Authentication for single single page apps".

Moje ostateczne rozwiązanie wygląda tak:

enter image description here

Narzędzia użyłem:

można zobaczyć przykład szyny aplikację za zdobycie ważnego tokenu JWT daną ważny znak facebook auth w https://github.com/muZk/rails5-api-jwt-facebook-auth

Po utworzeniu backend, część Ionic powinno być coś takiego:

this.fb.login(['public_profile', 'user_friends', 'email']) 
    .then((res: FacebookLoginResponse) => post('your-rails-backend.com/api/auth/facebook', { access_token: FacebookLoginResponse.accessToken })) 
    .then(res => console.log('This is your JWT for your rails API:', res.accessToken)) 

Wiem, że to nie jest rozwiązanie typu "kopiuj i wklej", ale mam nadzieję, że pomogłem ci trochę z twoim problemem.