3

를 사용하여 계정. authlogic을 사용하여 인증합니다. 내 사이트에는 자체 로그인이 있지만 페이스 북을 사용하기를 희망합니다. authlogic_facebook_connect (Facebooker 사용)를 사용해 보았습니다. 많은 딸꾹질 (docs가 실제로 완전히 지켜지지는 못함) 이후에 authlogic_facebook_connect가 작동하도록 했으므로 괜찮습니다. 이전에 사이트에서 사용한 적이없는 사용자에게 직면 할 때 기본 "연결"동작이 완벽하게 작동하지만 Facebook 및 내 사이트에 대해 다른 이메일 주소를 사용하는 사람들의 중복 로그인이 많이 발생합니다.루비 : Authlogic 페이스 북 통합 : 링크는 사용자가 입력하는 대신 자동으로 내가 루비 온 레일즈 웹 응용 프로그램을 개발하고 있어요 이메일 주소

사용자가 Facebook의 '연결'버튼을 클릭하면 (그리고 '허용'을 클릭하는 페이스 북의 인증 단계를 거친 후) 사용자가 원하는지 묻는 상자가 나타납니다. 내 사이트의 기존 계정에 연결하거나 자동으로 계정을 만들려는 경우 그들이 그것을 자동으로 생성하려면

, 우리는 좋은이고 우리는 정상적으로 진행하지만 경우 - 다른 한편으로는 - 그들은 내 사이트에 계정에 자신의 페이스 북 계정을 연결하려면, 실제로 원하는 그들에게 그들의 지역 자격 증명을 입력하고 올바른 계정을 찾으십시오. 우측 같은 외모를 계정을 자동으로 알아 내기 위해 내 솔루션을하지 즉, 내가 할 , 나는 사용자가이 작업을 수행 할 수.

나 authlogic_facebook_connect 또는 OAuth를 또는 뭔가를 사용하여이를 중 하나를 끌어 할 수있는 보석/플러그인/빠른 해킹이 있습니까?

--David

답변

3

다른 사람이 완벽한 보석에서 당신을 지적 할 수 있지만 나는 비슷한 문제에 근무했다고 말할 수는 롤 많은 일이 아니었다 우리 oauth2 gem을 기반으로합니다.

여기 내가 사용하는 코드/흐름의 스케치입니다.

1) 사용자가 페이스 북에 연결 '을 클릭하고는이

def to_facebook 
    options = { 
     :redirect_uri => facebook_callback_url, 
     :scope => "email,publish_stream" # whatever you want to do 
    } 
    client = OAuth2::Client.new(FACEBOOK_API_KEY, FACEBOOK_API_SECRET, :site => FACEBOOK_API_SITE) 

    redirect_to client.web_server.authorize_url(options) 
end 

2) 사용자처럼 행동에 당신을 전송 페이스 북에 넘어 당신에게 당신이 원하는 모든 액세스를 제공하고 페이스 북이 호출 누군가가 기록되는 경우

다음
def facebook_callback 
    client = OAuth2::Client.new(FACEBOOK_API_KEY, FACEBOOK_API_SECRET, :site => FACEBOOK_API_SITE) 
    access_token = client.web_server.get_access_token(params[:code], :redirect_uri => facebook_callback_url) 

    do_my_custom_user_association(access_token) 
end 

당신이 do_my_custom_user_association에서 원하는대로 지정할 수 있습니다, 당신은 authlogic에서 current_user을 사용할 수 있어야한다 : 콜백이 같은 조치로 이동해야하는 facebook_callback_url 지정 in을 사용하여 로그인 한 사용자가 현재 계정이나 다른 계정으로 병합 할 것인지 선택할 수있는 플로우로 리디렉션 할 수 있습니다. 현재 사용자가없는 경우 페이스 북 데이터를 첨부하여 계정 생성 흐름으로 보낼 수 있습니다. 가합니다 (get_acccess_token이 실패 할 경우 예를 들어 facebook_callback PARAM error_reason으로 타격을받을 것) 처리 할 경우 오류가 나는 당신이 바로 컨트롤러에있는 모든 OAuth2를 상호 작용을 추천하고 있지 않다이, 그냥 스케치입니다

주, 그러나 기본적인 생각은 거기에 있습니다. OAuth2를 상호 작용 중 하나가 이해가되지 않는 경우

http://developers.facebook.com/docs/authentication/를 참조하십시오.

+0

우수. 이것은 완벽하게 작동합니다. 정말 고마워. 세션에서 나중에 다시 사용하기 위해 액세스 토큰을 저장할 어쨌든 알고 있습니까? – DavidH