2011-10-26 5 views
2

나는 devise/omniauth를 설정했고 지금은 Facebook 자바 스크립트 SDK를 사용하여 로그인/사용 권한을 요청한 다음 내 omniauth 콜백 컨트롤러에 전달합니다.Facebook에서 승인 코드를 얻는 방법 javascript SDK

이것은 내가 가지고있는 것 (coffeescript)입니다.

$('#fb-connect').live 'click', -> 
    FB.login ((response) -> 
    if response.authResponse 
     window.location = "https://stackoverflow.com/users/auth/facebook/callback?code=" + response.authResponse.signedRequest 
    else 
     console.log "User cancelled login or did not fully authorize." 
), scope: "email, offline_access" 

    false 

그러나 나는 Invalid verification code format 오류가 발생합니다. 코드 매개 변수가 서명 된 요청 이외의 다른 것을 기대하기 때문에 그럴 것이라고 가정합니다.

업데이트

그래서 인증 코드를 전달해야 할 것 같습니다,하지만 난 방법을 찾을 수 없습니다. direct url example은 response_type = code를 지정하여 인증 코드를 얻을 수 있음을 보여 주지만 FB.api를 사용하여이를 수행하는 방법을 알지 못합니다. 어떤 아이디어?

http://www.facebook.com/dialog/oauth/? 
    scope=email,user_birthday& 
    client_id=123050457758183& 
    redirect_uri=http://www.example.com/response& 
    response_type=code 

답변

2

에있는 문서를 확인

덜 버전을 사용하거나 param과 code가 모두 누락 된 경우 예외가 발생하는 경우 다음 인라인 j가 onclick과 함께 작동합니다.

<script> 
    function fb_authorise(){ 
    FB.login(function(response) { 
     if(response.authResponse) { 
     window.location = "https://stackoverflow.com/users/auth/facebook/callback?signed_request=<%= params[:signed_request]%>" 
     } 
    }, {scope: "email, offline_access"}); 
    }; 
</script> 

그래서 원래의 질문에 대한 대답은 당신이 코드를 사용하여 URL에 추가 한 다음 signed_request의 PARAM를 사용했다 =하지 signed_request

+1

난에 (나중에 omniauth 0.3.2 및 만 사실 생각이 나는 0.3.0에 있었다) – CodeWombat

0

클라이언트 측 인증을 사용하면 '코드'를 사용할 필요가 없습니다. 그 response.authResponse에는 이미 access_token이 포함됩니다. FB.login()은 이미이 모든 작업을 수행했습니다. "window.location = ..."이있는 곳에 사용자가 로그인했습니다.

authentication의 문서를 확인하십시오. 클라이언트 측 섹션을 읽었는지 확인하십시오. 또한이 고안/omniauth ... 다음 작품을 완벽하게

$('#fb-connect').live 'click', -> 
    FB.login ((response) -> 
    if response.authResponse 
     window.location = "https://stackoverflow.com/users/auth/facebook/callback 
    else 
     console.log "User cancelled login or did not fully authorize." 
), scope: "email, offline_access" 

    false 

편집을 사용할 때 컨트롤러에 전달하는 매개 변수 필요가 없습니다 그냥이 질문에 걸쳐 다른 사람 비틀 거림 넣다 fb.login

관련 문제