2011-06-10 8 views
7

Facebook에서 Android applicaton으로 검색 한 인증 토큰을 사용하여 서버 측에서 사용자를 인증 할 수 있습니까? 즉, Android 애플리케이션은 SSO를 사용하고 인증 토큰을 얻습니다. 그런 다음이 토큰을 Google App Engine에 배포 된 백엔드 애플리케이션으로 전송합니다. 그런 다음 백엔드 애플리케이션은 토큰을 사용하여 Facebook에 대해 사용자를 확인합니다.Facebook 인증 토큰 교환

검색된 토큰은 Android 응용 프로그램에서만 사용할 수 있기 때문에 가능하지 않겠지 만 누가 알겠습니까? 어쩌면 재사용 될지도 모릅니다.

답변

0

Facebook에는 실제로이 작업을 수행 할 수있는 Android SDK가 있습니다. 정보는 here입니다.

+0

예, Android에서 SSO를 사용할 수 있습니다. 하지만 문제는 내 백엔드 앱에 인증 토큰을 교환 할 수 있다는 것입니다. – user793456

0

가능합니다. 유효한 액세스 토큰은 유효한 액세스 토큰입니다. 그래프 API는 토큰이 어디에서 왔는지를 나타내지 만, 토큰에는 그래프 API의 해당 부분에 액세스 할 수있는 적절한 권한이 있습니다. 토큰은 발행일로부터 24 시간 동안 만 유효합니다. (그것은 정말로 한 마디입니까?) 발행 된 시점부터?

0

SingleSignOn (SSO)과 함께 facebook android sdk를 사용할 때 액세스 토큰 형식이 실제로 변경되었습니다. 새로 한편 토큰 액세스 을 형식의와 페이스 북 개발진이 지원 API를 휴식하는 과정에서 여전히으로 authToken에 의 일환으로 사용자 ID & 세션 키를 포함하는 대신지고 기존의 인증 토큰의 지금 우리는 authToken에

의 다른 형식을 얻을 우리는 DEFAULT_AUTH_ACTIVITY_CODE를 32665 (Facebook.java에서)에서 -1로 변경하여 android facebook sdk의 SSO를 비활성화 할 수 있습니다. 이것은 acess 토큰을 부여하기 위해 전통적인 dialouge를 호출하고 세션 토큰을 포함하는 액세스 토큰을 얻습니다.

당신이

공공 문자열 getSessionSecret (문자열 accessToken) 않고 MalformedURLException, IOException가 슬로우 같은 Facebook.java에 자신 만의 방법을 추가 할 필요가 보안 세션 키를 생성 찾고있는 사람들을 { 번들 B = 새로운 번들() ; b.putString ("method", "auth.promoteSession"); b.putString ("access_token", accessToken); b.putString ("session_key_only", "true"); 문자열 응답 = 요청 (b); 반송 응답; }

2

Android API에서 가져온 토큰을 서버로 보내면 (예 :/me? auth_token = ....을 사용하여) 그래프를 쿼리하여 토큰의 유효성을 확인할 수 있습니다. 문제는 동일한 토큰을 다른 제 3자가 사용할 수 있다는 것입니다. 즉, 클라이언트와 관련이 없습니다. 서버 식별을 기반으로하는 경우 세 번째 앱이 사용자 토큰을 사용할 수 있기 때문에 문제가 발생합니다. 당신). 이 문제를 해결할 방법을 찾고 있지만 아직 좋은 아이디어가 없습니다 ...