2013-07-16 1 views
4

나와 나와 팀은 사용자가 Facebook을 사용하여 로그인 할 수있는 Android 용 네이티브 모바일 소셜 네트워크에서 작업하고 있습니다. Ive는 Android 용 Facebook SDK를 구현할 수 있었지만 페이스 북 만 사용하여 로그인 한 사용자를 Facebook에서받은 자격 증명으로 적절하게/안전하게 인증하는 방법을 고민했습니다. 현재 내 시스템은 다음과 같습니다 :내 자신의 REST API에서 페이스 북으로부터 자격 증명 인증

단계 1. Android 클라이언트에서 사용자가 Facebook을 통해 login을 누르고 내 앱에 권한을 부여합니다. 사용자가

(이 사용자가 페이스 북을 사용하여 로그인이 처음 인 경우, 다른 정보들) 페이스 북이 우리에게 사용자 FB 사용자 ID, 이메일 및 토큰을 포함하는 응답을 보냅니다 우리의 권한을 부여하면

2 단계

3 단계 인증을 위해 API에 정보가 전송됩니다.

여기가 약간 분명한 곳입니다. 내 서버에서 페이스 북 자격 증명의 유효성을 검사하려면 어떻게해야합니까?

지금은 fb_uid와 fb_email을 가진 기존 사용자를위한 내 db를 확인했지만 누구나 anyones fb_uid를 얻을 수 있으며 그 사람을 의미하는 페이스 북에 가입하는 데 사용한 이메일을 찾기가 훨씬 어려워졌습니다. 가짜 HTTP 요청으로 다른 사용자 계정을 쉽게 해킹 할 수 있습니다.

답변

2

access_token이 유효하면 앱에서 액세스 권한을 요청한 일부 사용자 Facebook 데이터에 액세스 할 수 있습니다. 받은 자격 증명이 올바른지 확인하는 한 가지 방법은 해당 access_token을 사용하여 Facebook을 쿼리하는 것입니다. 예를 들어

, this page suggests how to open up the access_token propertiesGET 호출을 사용하여 :

{ 
    "data": { 
     "app_id": 138483919580948, 
     "application": "Social Cafe", 
     "expires_at": 1352419328, 
     "is_valid": true, 
     "issued_at": 1347235328, 
     "metadata": { 
      "sso": "iphone-safari" 
     }, 
     "scopes": [ 
      "email", 
      "publish_actions" 
     ], 
     "user_id": 1207059 
    } 
} 
+0

당신은 보스 사과 소스 내 친구입니다 : 다음 반환

GET graph.facebook.com/debug_token? input_token={token-to-inspect} &access_token={app-token-or-admin-token} 

. 감사합니다. – ChuckKelly

+0

@Peter - 프로덕션 환경에서이 접근 방식을 사용 했습니까? 성능면에서 어떻게 그것입니까? 모든 API 요청에 대해이 작업을 수행하는 것은 비용이 많이 듭니다. – jramoyo

+1

@jramoyo : 위에서 설명한 내용은 오류가있는 경우에만 필요합니다 (갖고 있지 않은 권한을 사용해보십시오). 그래서 예, 저는 "생산"에서 사용했지만 액세스 토큰이 우리가 원하는 것을하지 않으면 오류 처리에만 사용합니다. 모든 (모든?) API 요청에는 확실히 필요하지 않습니다 (비공개 정보의 경우 액세스 토큰이 있지만). –

관련 문제