“Errore durante la convalida segreto cliente”. 404 con Facebook OAuth e rubino
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.
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.