Doppia autenticazione con Facebook

E rieccoci qui, pochi attimi dopo (due posto in un giorno, per uno con una media di uno al mese...), per chiudere l'avventura iniziata precedentemente...

Il problema era che Facebook ignora il parametro origin... Dopo un po' di scervellamento, ho provato a creare una seconda applicazione in Facebook che puntasse allo stesso url e... NON HA FATTO UNA PIEGA!

Ottimo, ho pensato, due applicazioni, una Worker, una Company, due chiavi diverse, ho quasi finito...

E ridagli col quasi! Ecco nascere un secondo problema: voglio usare Omniauth, ma Omniauth accetta UNA SOLA chiave per provider. La cosa si faceva estenuante finché la mela mi è veduta sulla testa, ho visto la terra girare intorno al sole e... Banale! Estendiamo omniauth... No, poi diventa impossibile manutenere il tutto...

Creiamo DUE nuovi provider per omniauth, che estendano il provider di facebook, così abbiamo due chiavi ecc.

L'uovo di Colombo, insomma! Basta creare due classi del tipo:

class OmniAuth::Strategies::FacebookWorker < OmniAuth::Strategies::Facebook
  def initialize(app, client_id = nil, client_secret = nil, options = {}, &block)
    #NON POSSO RICHIAMARE 
    #super(app, :facebook_worker, client_id, client_secret, {:site => 'https://graph.facebook.com/'}, options, &block)
    #perche' sarebbe la super di super...
    #Quindi chiamo super e poi imposto il name
    super(app, client_id, client_secret, options, &block)
    @name = :facebook_worker
  end
end
class OmniAuth::Strategies::FacebookCompany < OmniAuth::Strategies::Facebook
  def initialize(app, client_id = nil, client_secret = nil, options = {}, &block)
    super(app, client_id, client_secret, options, &block)
    @name = :facebook_company
  end
end

ed inserire nella configurazione di omniauth:

provider :facebook_worker,  'worker_key', 'worker_secret'
provider :facebook_company, 'company_key', 'company_secret'

ed il gioco è fatto! Due provider diversi, che puntano però sempre a facebook, con due chiavi diverse...

Adesso funziona tutto, senza quasi!

Categories

Other Posts

RSS Feed

Subscribe

Archives