2012-10-23 3 views
1

heroku에서 호스팅되는 Facebook 캔버스 응용 프로그램을 만들고 있습니다. 인증을 위해 omniauth-facebook gem과 함께 devise gem을 사용하고 있습니다.페이스 북을 devise 캔버스 응용 프로그램에 대한 유일한/기본 로그인으로 설정하십시오.

현재 앱을 열면 이메일과 비밀번호로 "로그인"을 요청하거나 Facebook에서 로그인 버튼을 클릭하십시오.

이 페이지를 건너 뛰고 사용자가 앱을로드하면 자동으로 인증해야합니다.

어떻게하면됩니까?

답변

1

페이스 북 앱이 사용자 권한을 요청하고 권한을 요청한 경우 레일즈 앱에 전달 된 signed_request 매개 변수에 필요한 세부 정보가 포함되어 있어야합니다. 그래서 당신이 할 수있는 매개 변수를 디코딩하고 해시 자체에서 페이스 북의 사용자 ID를 잡아입니다. 이 같은

시도 뭔가 :

class ApplicationController 

    before_filter :inspect_signed_request 

protected 
    def base64_url_decode(input) 
    input += ('=' * (4 - input.length % 4) % 4) 
    Base64.decode64(input.tr('-_', '+/')) 
    end  
    def inspect_signed_request 
    encoded_sig, payload = params[:signed_request].split('.', 2) 

    # decode the data 
    sig = base64_url_decode(encoded_sig) 
    data = JSON.parse(self.class.base64_url_decode(payload)) 
    raise data.inspect 
    end 
end 

기본적으로 당신에게 서명 요청의 세부 정보를 보여주는, 예외를 발생합니다. 본질적으로, 당신은 단지 그것을 파싱 할 수 있고, 서명 된 요청 FB ID 값을 체크 할 수 있습니다. 없으면 로그인 양식으로 리디렉션하는 코드를 추가 할 수 있습니다.