2013-02-03 2 views
1

SSO 로그인에 Facebook OAuth를 사용하는 Phonegap 기반 애플리케이션을 개발 중입니다. 서버 측에서 FB.login 자바 스크립트 응답을 확인하는 방법은 무엇입니까? 페이스 북의 모바일에서 앱으로의 리다이렉션이 성공적으로 끝나면 userId와 accessToken을 얻는다. 서버의 사용자에 대한 액세스 권한을 얻기 위해 액세스 토큰을 확인하는 것으로 충분합니까? 사용자가 이미 웹을 통해 연결되어 있기 때문에, 사용자는 모바일 (자바 스크립트)에 FB.login를 사용하고 성공적으로 (클라이언트)를 반환 :서버 측 모바일 앱에서 FBLogin의 유효성을 검사하는 방법

https://graph.facebook.com/me?fields=id&access_token=... 

내 문제는 모바일 및 웹 JS & PHP의 혼합이다. 이제 데이터베이스에서 FB id를 확인하여 AJAX 요청을 통해 사용자 자격 증명을로드 할 수 있습니다. AJAX 요청을 안전하게하는 방법. 프로토 타입은 유효한 FB를 전달하는 모든 사용자에게 로그인하며 내 FB에서도 종료됩니다. 따라서 시스템은 FB (서버)에서 재확인하지 않고 세션을 열 수 있습니다. 내 아이디어는 accessToken이 유효한지 확인하는 것이지만 이것이 충분한 지 확신 할 수 없다면 ... 나는 그렇지 않을 것이라고 생각한다.

+0

나는 당신을 가정하고 접근에 대해 얘기 FB에 대한 사용자 정보? 그렇다면 사용자가 요청한 권한에 따라 액세스 토큰을 사용하여 FB에서 허가 된 정보를 검색 할 수 있습니다. (액세스 토큰이 유효 할 때까지) –

+0

죄송합니다. 내 질문에 불만이 많아서 편집 해 드리겠습니다. –

답변

0

accessToken 솔기 대신 SignedRequest를 사용하여 내 요구에 맞는 올바른 선택입니다. PHP 솔루션, 앱 비밀 사용.

private function check_signed_request($signed_request) { 

    $secret = Semods_Utils::getSetting('socialdna.facebook_secret',''); 
    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

    // decode the data 
    $sig = $this->base64_url_decode($encoded_sig); 
    $data = json_decode($this->base64_url_decode($payload), true); 

    if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') { 
     throw new Exception('Unknown algorithm. Expected HMAC-SHA256'); 
    } 

    // Adding the verification of the signed_request below 
    $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true); 
    if ($sig !== $expected_sig) { 
     throw new Exception('Bad Signed JSON signature!');    
    } 

    return true; 
} 

private function base64_url_decode($input) { 
    return base64_decode(strtr($input, '-_', '+/')); 
} 

참조 : 나는 signed_request를받지 못한 https://developers.facebook.com/docs/howtos/login/signed-request/

문제, 이러한가 정의되어 있습니다

response.authResponse.signed_request 
response.authResponse.signedRequest 

하고 이것 만 포함 "..."

response.authResponse.sig 

모두 하나의 아이디어?

는 확인 .sig 솔기가 내 플러그인 만이 제공 할 편집, 하드 코딩 : 그래서 수정이 https://github.com/davejohnson/phonegap-plugin-facebook-connect

을 무관해야하지만보고 : https://github.com/davejohnson/phonegap-plugin-facebook-connect/issues/245

+0

모바일 SDK는 서명 된 요청을 제공하지 않으므로 acces_token을 사용할 수 있습니다. https://github.com/phonegap/phonegap-facebook-plugin/issues/245 –

관련 문제