2012-07-02 2 views
0

나는 Facebook 사용자 인터페이스를 사용하여 사용자 등록/로그인을 가능하게합니다 (devise 및 omniauth 사용). Firesheep에서 여러 기사를 읽은 후 나는 내 전체 애플 리케이션을위한 SSL 통신을 강제로하기로 결정했습니다. ssl을 사용하여 로컬 호스트에서 Facebook-Connect를 테스트하는 방법

는 난 단지 SSL을 통해 통신 할 수 내 레일 3.0.x의 응용 프로그램을 강제로이 튜토리얼을 따라 : http://www.simonecarletti.com/blog/2011/05/configuring-rails-3-https-ssl/

그리고 로컬 locahost에에 WEBrick 사용하여 응용 프로그램을 테스트 할 수 있도록 내가이 튜토리얼을 따라 : 3001 : http://blog.readypulse.com/2012/01/19/setup-webrick-to-serve-ssl-https-as-well-as-non-ssl-http-traffic-side-by-side/

지금까지 너무 좋아. 내 응용 프로그램은 localhost:3000에서 실행되는 동안 ssl 통신을 강제로 수행합니다. 내가 https://localhost:3001 내 페이스 북의 개발 응용 프로그램의 사이트 URL을 변경하는 경우

연결 페이스 북으로 통신을 시도 할 때 내 문제가 발생, FB 그래프는 내가 http:localhost:3001에 사이트 URL을 변경하면 오류가 발생합니다, 그러나 { "error": { "message": "Invalid redirect_uri: Given URL is not allowed by the Application configuration.", "type": "OAuthException", "code": 191 } }

로 응답 내 서버에서 연결이 페이지를로드하는 동안 재설정되었다고 말했습니다. 브라우저 URL 표시 줄에로드하려고 시도한 URL이 localhost:3001/auth/facebook/callback?code=MYCODEHERE 인 것으로 표시되며 URL 앞에 "https : //"를 추가하고 다시로드하면 예상대로 페이지가로드됩니다.

어쩌면 내 문제는 내 기본적인 SSL 지식에 기인합니다. 하지만 누군가가 내게 페이스 북의 내 로컬 테스트를 지원하기 위해 페이스 북 개발 애플 리케이션을 설치하는 방법을 설명 할 수 있다면 크게 감사하겠습니다 SSL을 통해 연결?

답변

2

확인. 알았어. 다음은 localhost : 3001에서 fs와 twitter 등록/ssl을 통한 로그인을 테스트 할 수 있도록 한 것입니다.

먼저 내 앱의 FB 사이트 URL을 http://localhost:3001으로 설정했습니다. 당신은 당신의 로컬 호스트에 보안 URL 포인트를 얻을 수 https://ngrok.com/을 사용할 수 있습니다

if RAILS_ENV == "production" 
    full_host = 'https://www.mydomain.com' 
    Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, 'myfbappid', 'myfbsecret', {:scope => 'email, publish_stream'} 
    provider :twitter, 'mytwitterappid', 'mytwittersecret' 
    end 
    Twitter.configure do |config| 
    config.consumer_key = 'myconsumerkey' 
    config.consumer_secret = 'myconsumersecret' 
    config.oauth_token = 'myoauthtoken' 
    config.oauth_token_secret = 'myoauthtokensecret' 
    end 
elsif RAILS_ENV == "development" 
    full_host = 'https://localhost:3001' 
    Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, 'myfbdevappid', 'myfbdefappsecret', {:scope => 'email, publish_stream'} 
    provider :twitter, 'mytwitterdevappid', 'mytwitterdevappsecret' 
    end 
    Twitter.configure do |config| 
    config.consumer_key = 'mytwitterconsumerkey' 
    config.consumer_secret = 'mytwitterconsumersecret' 
    config.oauth_token = 'mytwitteroauthtoken' 
    config.oauth_token_secret = 'mytwitteroathtokensecret' 
    end 
end 
OmniAuth.config.full_host = full_host 
+0

'RAILS_ENV == "development"대신에'Rails.env == "development"를 사용해야했습니다. –

2

로컬 호스트 (whatever IN A 127.0.0.1)를 가리키는 하위 도메인을 설정하거나 /etc/hosts 파일을 통해 상기 하위 도메인을 만들어야합니다.

두 경우 모두 http://yoursubdomain.yourdomain/auth/....yourdomain을 페이스 북 앱에 등록 된 도메인으로 사용할 수 있습니다.

+0

나는이 얻을 확실하지 : 그럼 다음과 같이 omniauth 초기화를 수정했습니다. 나는 하위 도메인을 사용하지 않는다. FB 그래프를 https를 사용하여 다시 호출하기 만하면됩니다. –

+0

Facebook은 앱에 등록한 도메인과 일치하는 리턴 URL 만 허용합니다. 따라서 앱 설정에 입력 한 도메인 또는 하위 도메인에 해당하는 URL을 제공해야합니다. localhost로 작업하기 때문에'localhost' 대신에 서브 도메인을 제공하기 위해 DNS/hosts 항목이 필요합니다. – ThiefMaster

+0

아. 네가하는 말을 듣는다. 그러나 나는 다른 경로를 갔다. (나는 첫 번째 게시물에서 언급 했어야했다.) 현재 개발 용 FB 앱 (http : // locahost : 3000의 사이트 URL이 있음)과 프로덕션 용 FB 앱 (www.myapp.com을 가리키는)이 있습니다. 내 문제는 FB 개발 애플 리케이션을'https : // localhost : 3001'로 콜백 할 수 없다는 것이다. 단순히'http : // localhost : 3001'을 호출하려고합니다. –

관련 문제