Domanda

Sto cercando di implementare l'autenticazione Facebook per un app con guardiano, dopo che l'utente permette facebook auth e reindirizza alla mia app callback con il token ho un 400 consumando l'API. La mia strategia warden è questo:

class Facebook < Warden::Strategies::Base
  def client
    @client ||= OAuth2::Client.new MyApp::Facebook::AppID, MyApp::Facebook::AppSecret, :site => 'https://graph.facebook.com'
  end

  def params
    @params ||= Rack::Utils.parse_query(request.query_string)
  end

  def authorize_url
    client.web_server.authorize_url :redirect_uri => request.url, :scope => 'email,publish_stream'
  end

  def authenticate!
    throw(:halt, [302, {'Location' => authorize_url}, []]) unless params['code']
    facebook = client.web_server.get_access_token params['code'], :redirect_uri => request.url
  rescue OAuth2::HTTPError => e
    puts e.response.body
  end
end

Strategies.add :facebook, Facebook

Il risultato della stampa del corpo della risposta è questa:

{"error":{"type":"OAuthException","message":"Error validating client secret."}}

Io sono abbastanza shure l'id app e app segreti sono quelli forniti da FB.

Grazie.

È stato utile?

Soluzione

Ho visto che il messaggio di errore più volte. Qui ci sono le cose che avrei doppio controllo:

  • il dominio è lo stesso di quello che avete elencato nel facebook di callback url
  • l'applicazione id è corretta (in realtà stampare questo fuori su una pagina, a volte y
  • il segreto app è corretto

Altri suggerimenti

Aggiungi redirect_uri durante la creazione dell'oggetto di facebook che risolverà il problema.

reindirizzare l'utente a https://www.facebook.com/dialog / OAuth? client_id = YOUR_APP_ID & redirect_uri = YOUR_URL Dopo clic dell'utente permettono, sarà colpito la nostra Redirect Uri A quel punto avremo il codice e abbiamo bisogno di fare un lato server HTTP Get al seguente URL di scambiare il codice con il nostro accesso token OAuth:

https://graph.facebook.com/oauth/access_token ? client_id = YOUR_APP_ID & redirect_uri = YOUR_URL &

 client_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE

Ora al punto 3, ho continuato a ottenere HTTP 400 risposta indietro.

Così, dopo alcune ricerche, ho scoperto che su quel redirect_uri che abbiamo presentato sul punto 3 non fa altro che convalidare la richiesta. Così, il valore necessità di abbinare con il passaggio 2.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top