2016-03-23 20 views
8

Voglio costruire un bails rails per il login fb usando, framework ionico. Finora ho creato con successo un'applicazione web-based e si sta autenticando con successo con Facebook.API Rails per login fb con Ionic

Ora voglio fare lo stesso, ma con app basata su ionici.

Domande?

  1. È possibile scrivere un api di rota utilizzando omniauth e utilizzando l'API di autenticazione fb con ionico.
  2. Se è (1) è possibile rispetto al tipo di richiesta JSON da effettuare o restituire.

Impossibile trovare nulla sul Web, né alcun progetto github di guide con ionico (accesso fb).

Il mio codice attuale:

Controller:

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 

Modello:

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 

Inizializzatori:

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

Penso che tu stia cercando l'autenticazione lato client oauth2 (non importa omniauth, e supponiamo che il back-end delle rotaie non esista). http://blog.ionic.io/oauth-ionic-ngcordova/ –

risposta

0

non sono sicuro se sia possibile ... ma penso che non dovresti usare il stessa logica

Rails facebook flusso omniauth è basato sulle sessioni mentre le app Ionic sono per lo più "token di accesso" in base all'esposizione di un'API Rails con autenticazione.

Inoltre, in Ionic hai alcuni vantaggi: puoi accedere al login nativo di Facebook utilizzando Ionic Native Facebook Connect Plugin che fornisce un'esperienza utente migliore agli utenti che hanno installato Facebook.

Ho avuto lo stesso problema e quello che ho finito è stato capire come funziona l'autenticazione per le app a singola pagina. Per questo, ti consiglio di leggere "Authentication for single single page apps".

La mia soluzione finale assomiglia a questo:

enter image description here

Gli strumenti che ho usato:

È possibile vedere un esempio rotaie app per il recupero di un JWT gettone valido dato un facebook autenticazione Token validi al https://github.com/muZk/rails5-api-jwt-facebook-auth

Dopo aver creato il backend, la parte ionica dovrebbe essere qualcosa di simile:

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)) 

So che questa non è una soluzione di copia-incolla ma spero di averti aiutato un po 'con il tuo problema.

Problemi correlati