2011-08-21 5 views
2

특정 팬 페이지에 탭을 추가하는 응용 프로그램을 개발 중입니다. (해당 팬 페이지 외부에서 사용하기위한 것은 아닙니다), 사용자 ID ()를 얻어야합니다. 탭 (이 탭은 사용자가 몇 가지 질문에 답변해야하는 컨테스트로 구성되어 있으며 해당 질문에 대한 답변을 저장하여 승자를 결정할 수 있습니다).Facebook 탭 방문 사용자 ID

나는 표준 페이스 북 탭 응용 프로그램이 사용자에 대한 막연한 정보 (언어 및 사용자 연령의 대략적인 표시) 만 얻는다는 것을 알고 있지만 사용자의 사용자 ID를 얻는 방법에 대해 궁금합니다. 탭보기 나는이 페이지가 사용자 프로필 페이지에 설치되어 있지 않다는 것을 강조하고 싶습니다. 그래서 나는 그런 ID를 얻을 수 없습니다. 나는 사용자에 대한 정보를 얻을 수있는 권한을 요청할 수있는 방법이 있을지도 모른다고 생각했지만 이전에는 캔버스 앱에서만이 탭을 본 적이 없었습니다.

캔버스 페이지에서이 콘테스트를 가질 수 없으므로 정말 탭 페이지에 있어야합니다. 대안은 우리 팬 중 한 명을 우승자로 무작위로 선택하는 것이지만이 문제를 해결하는 것이 좋습니다.

사용자에게 응용 프로그램 탭에서 개인 데이터에 액세스 할 수있는 권한을 요청하는 것과 관련된 도움이 있으면 대단히 감사하겠습니다. 사전에

감사, 사용자에 대한 특정 정보를 얻기 위하여

답변

6

팀은 해당 사용자가 응용 프로그램을 승인했을 것이다. 당신 요구 사항에 따라

난 당신이 자바 스크립트 SDK 사용하는 것이 좋습니다 것입니다 : http://developers.facebook.com/docs/reference/javascript/

다음 코드는로드시에 사용자가 로그온을 시도합니다 - 응답이뿐만 아니라 사용자 ID를 포함 성공할 경우 액세스 토큰. 사용자가 아직 응용 프로그램을 인증하지 않은 경우 인증 대화 상자가 나타납니다. 이 예에서는 로그인이 초기화 직후에 시도되지만, 명시 적 사용자 상호 작용 (예 : 링크)을 통해 FB.login을 트리거하는 것이 훨씬 더 나은 방법입니다. 그렇지 않으면 브라우저가 팝업을 차단할 수 있습니다. 오류를 수정하는

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId: 'your app id', 
      cookie: true, 
      xfbml: true, 
      oauth: true 
     }); 

     FB.login(function(response) { 
      if (response.authResponse) { 
       // response will contain, among other things, the users id and accesstoken 
       FB.api('/me', function(response) { 
        // response will contain the user data you have permissions for 
       }); 
      } else { 
       // User cancelled login or did not fully authorize. 
      } 
     }, {scope: 'LIST,YOUR,PERMISSIONS'}); 
    }; 
    (function() { 
     var e = document.createElement('script'); e.async = true; 
     e.src = document.location.protocol + 
       '//connect.facebook.net/en_US/all.js'; 
       document.getElementById('fb-root').appendChild(e); 
    }()); 
</script> 

편집은 @ifaour에 의해 지적했다.

+3

'oauth' 매개 변수를'true '로 설정해야합니다. – ifaour

+0

이 설명에 감사드립니다. 이 코드를 사용하는 데 문제가 있었지만 그 플래그를 설정하면 –

+0

@jBit에서 ID를 가져와 "user_about_me"범위 사용 권한의 일부가됩니까? –

0
//This will help you to get user data 

<?php 
    session_start(); 
    require 'src/facebook.php'; 
    $app_id = "your_app_id"; 
    $app_secret = "your_secret_key"; 
    $facebook = new Facebook(array(
     'appId' => $app_id, 
     'secret' => $app_secret 
    )); 

    $canvas_page = "https://www.facebook.com/page_name/app_appid"; //this is your facebook app url 

    $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . urlencode($canvas_page); 

    $signed_request = $_REQUEST["signed_request"]; 

    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 

    if (empty($data["user_id"])) { 
     echo("<script> top.location.href='" . $auth_url . "'</script>"); 
    } else { 
     echo $data["user_id"]; 
     $_SESSION['fbuser'] = $data["user_id"]; 
    } 
+0

facebook php sdk가 필요합니다. –