2013-10-20 3 views
0

iOS 앱에 Facebook 로그인을 통합하려고합니다. 이 응용 프로그램은 PHP로 작성된 API를 사용하며 현재 기본 로그인 프로세스 (전자 메일 및 암호)로 사용하고 있습니다. Facebook SDK를 성공적으로 추가하여 Facebook에서 사용자의 데이터를 검색하는 데 사용했지만이 보안 문제에 봉착했습니다. 앱에서 가져 오는 데이터를 진정한 Facebook 사용자 데이터로 신뢰하면 누군가가 API를 보낼 수 있습니다. 엔드 포인트에서 Ajax를 호출하고, 가장 좋은 경우 시나리오에서 페이스 북 로그인 프로세스를 통해 새로운 사용자를 추가하기 때문에 가짜 사용자로 데이터베이스를 흩 뜨린다.Facebook 로그인 클라이언트 쪽 및 서버 쪽

다음 해결책을 고려하고 있습니다. iOS에서 사용자의 데이터를 로컬로 가져 와서 사용자의 Facebook ID 만 서버에 보냅니다. 두 SDK 모두 쿠키에 데이터를 저장해야하기 때문에 서버에서 현재 로그인 한 사용자 데이터를 검색하고 앱에서 제공된 사용자 ID를 확인해야합니다. 모든 것이 일치하면 서버 측에서 검색 한 데이터를 사용하여 db에 새로운 사용자를 추가하거나 (또는 ​​단순히 로그인) 동일한 데이터가 클라이언트 측에 있어야합니다.

문제는 서버 쪽에서는 항상 $ facebook-> getUser() 메서드 호출에서 0이 발생한다는 것입니다. 아마도 뭔가를 놓친 것 같습니다. 생각?

PS> 동일한 PHP API를 사용하여 Javascript SDK를 사용할 때도 비슷한 문제가 발생하지만 Javascript 앱이 로컬 컴퓨터에서 실행되는 경우에만 마찬가지입니다. 스테이징 서버에서 실행 중이면 모든 것이 정상적으로 작동합니다. 편집 : 이것은 도메인 이름과 관련이 있습니다.

편집 2 : 내가 어떤 코드를 삽입하지 않은,하지만 당신은 가장 간단한 예를 가정 할 수있다 : 나는 다소 허용 솔루션을 (심지어하지 최적 이럴하지만) 발견

$fb = new Facebook(array(
    "addId" => "myAppId", 
    "secret" => "myAppSecret", 
    "cookie" => true 
)); 

$user = $fb->getUser(); // Returns 0 

답변

1

합니다.

내 API에 사용자의 Facebook ID를 제공하는 대신 iOS 앱에서 [session.accessTokenData accessToken] 전화를 거는 액세스 토큰을 피드에 제공합니다. PHP는 측면에서

, 나는 너무 $facebook->api()에 대한 후속 호출이 인증되는 $facebook->setAccessToken($token)를 호출합니다. 인증 토큰이 유효하면 모든 것이 정상입니다. 그렇지 않다면 오류가 발생합니다. 정확히 발생해야합니다.

중요 : 이렇게하려면 앱에서 서버로 보안 연결을 사용해야합니다.

관련 문제