2012-07-26 4 views
2

oauth2 devise/warden/omniauth를 통해 페이스 북과 통합되는 응용 프로그램이 있습니다. 모든 것이 효과가 있으며 만족합니다.Facebook AppCenter와 통합 개발

이제 새로운 페이스 북 appcenter와 앱을 통합하려고합니다. 기본적으로 사용자를 내 사이트에 알리기 전에 사용자를 인증하는 것으로 해결됩니다.

기본적으로, 사용자가

/?fb_appcenter=1&code=xxxxxx 

같은 URL에 종료하지만 고안 'omniauthcontroller 내가 코드를 통해 전달하는 간단한 리디렉션을 수행하려고

/users/auth/facebook/callback 

즉, 다른 URL에 대기 query 매개 변수를 콜백 URL에 추가하지만 "잘못된 자격 증명"오류가 발생합니다.

oauth2 페이스 북 전략 내에서 access_token을 얻으려는 호출에 사용 된 redirect_uri가 초기 코드를 생성하는 데 facebook 자체에서 사용되는 것과 일치하지 않을 수 있다고 생각합니다. 그러나 어떻게 생각합니까? 그것을 바꿔야한다고 생각합니다.

누구나 과거에이 문제를 제안했거나 해결 했습니까?

devise (1.4)와 omniauth (0.3)의 구버전을 사용하고 있습니다 만 새로운 버전의 경우에도 일반적인 방향이 무엇인지에 대한 힌트가 충분합니다.

답변

0

redirect_uri은 하드 코드 되었기 때문에 이전 버전의 omniauth에서는 불가능했지만 사용자를 표준 인증 콜백 (예 : /auth/facebook/callback)으로 리디렉션하는 것이 합법적 인 방법입니다.

이것은 사용자를 다시 인증합니다. 그러나 사용자가 이미 자격 증명을 제공 했으므로 이제 막 통과하게됩니다.

OA의 페이스 북 전략에서 코드를 가져 와서 OAuth2 기능을 약간 구현하여 사용중인 방문 페이지에서 기본적으로 액세스 토큰과 코드를 교환하는 것입니다.

0

코드가 인증 된 추천에서 생성 된 토큰에 대한 코드를 교환 할 때 redirect_uri 값은 사용자가 가져온 것과 동일한 URL이어야합니다. 에이 효과에 메모가 년대 App Center documentation :

특별한 고려 쿼리 문자열 설정을 사용하는 경우 :

을 당신은에 중요한 응용 프로그램 센터 서버 측 인증 흐름을 사용하려는 경우 액세스 토큰에 대한 코드를 교환 할 때 redirect_uri 매개 변수를 올바르게 전달하는지 확인하십시오. redirect_uri 매개 변수를 사이트의 클릭 연결 URL로 설정해야합니다. 대부분의 경우 URL은 다음과 같습니다.

http://www.example.com/?fb_appcenter=1&fb_source=search&code=CODE_HERE 이렇게하면 redirect_uri를 동일한 값으로 설정해야합니다. 클릭 연결 URL에 추가 된 검색어 매개 변수가 변경 될 수 있으므로이 로직이 동적인지 확인하십시오.

+0

예, omniauth/devise가 기본적으로 사용하는 것과 다른 redirect_uri를 사용하도록 설득 할 수 있습니까 (이는 '빈 문자열'이라고 생각합니다) – riffraff