2011-01-20 10 views
8

Próbuję zaimplementować uwierzytelnianie facebookowe dla aplikacji z opiekunem, po tym jak użytkownik zezwoli na autoryzację facebook i przekierowuje do mojego wywołania zwrotnego aplikacji z tokenem, otrzymuję 400 podczas korzystania z api. Mój strażnik strategia jest taka:"Błąd podczas sprawdzania tajności klienta." 404 z Facebookiem Oauth i 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 

Wynik drukowania ciało odpowiedź jest taka:

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

Jestem całkiem shure identyfikator aplikacji i aplikacji tajne są te przewidziane przez FB.

Dzięki.

Odpowiedz

18

Wiele razy widziałem ten komunikat o błędzie. Oto rzeczy, bym dokładnie sprawdzić:

  • domena jest takie samo jak to, co wymienione w url facebook zwrotnej
  • app id jest poprawna (a właściwie drukować to na stronie, czasami y
  • Tajemnica aplikacji jest poprawna
+2

Dla mnie, użyłem niewłaściwej nazwy zmiennej z mojego pliku konfiguracyjnego: - / –