2011-01-20 18 views
8

Estoy tratando de implementar la autenticación de Facebook para una aplicación con warden, después de que el usuario permite facebook auth y redirige a mi aplicación de devolución de llamada con el token obtengo un 400 mientras consumo la API. Mi estrategia Warden es la siguiente:"Error al validar el secreto del cliente". 404 con Facebook Oauth y ruby ​​

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 

El resultado de la impresión del cuerpo de la respuesta es la siguiente:

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

estoy bastante Shure el ID de aplicación y secreta aplicación son los proporcionados por FB.

Gracias.

Respuesta

18

He visto ese mensaje de error muchas veces. Estas son las cosas que me doble Vea:

  • su dominio es el mismo que lo que indicó en la url facebook devolución de llamada
  • el ID de la aplicación es correcta (en realidad imprimir esto en una página, a veces y
  • la aplicación secreta es correcta
+2

Para mí, estaba usando un nombre de variable incorrecto de mi archivo de configuración: - / –

Cuestiones relacionadas