2011-03-15 2 views
0

Я следовал примеру PHP PHP SDK и создал следующее.Facebook Connect Получение данных пользователя

<?php 

    require ("lib/facebook.php"); 

    $facebook = new Facebook(array('appId' => 'XXXXXXXXXXXX', 'secret' => 'XXXXXXXXXXXXXXXXXXXXXXX', 'cookie' => true,)); 

    $session = $facebook->getSession(); 
    $me = null; 
    // Session based API call. 
    if($session) { 
     try { 
      $uid = $facebook->getUser(); 
      $me = $facebook->api('/me'); 
     } 
     catch (FacebookApiException $e) { 
      error_log($e); 
     } 
    } 

    // login or logout url will be needed depending on current user state. 
    if($me) { 
     $logoutUrl = $facebook->getLogoutUrl(); 
    } else { 
     $loginUrl = $facebook->getLoginUrl(); 
    } 
    ?> 

    <!doctype html> 
    <html xmlns:fb="http://www.facebook.com/2008/fbml"> 
     <head> 
     <title>php-sdk</title> 
     <style> 
    body { 
     font-family: 'Lucida Grande', Verdana, Arial, sans-serif; 
    } 
    h1 a { 
     text-decoration: none; 
     color: #3b5998; 
    } 
    h1 a:hover { 
     text-decoration: underline; 
    } 
    </style> 
     </head> 

     <body> 
    <div id="fb-root"></div> 
    <script> 
      window.fbAsyncInit = function() { 
      FB.init({ 
       appId : '<?php 
    echo $facebook->getAppId(); 
    ?>', 
       session : <?php 
    echo json_encode($session); 
    ?>, // don't refetch the session when PHP already has it 
       status : true, // check login status 
       cookie : true, // enable cookies to allow the server to access the session 
       xfbml : true // parse XFBML 
      }); 

      // whenever the user logs in, we refresh the page 
      FB.Event.subscribe('auth.login', function() { 
       window.location.reload(); 
      }); 
      }; 

      (function() { 
      var e = document.createElement('script'); 
      e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 
      e.async = true; 
      document.getElementById('fb-root').appendChild(e); 
      }()); 
     </script> 
    <?php 
    if($me): 
    ?> 
    <a href="<?php 
     echo $logoutUrl; 
    ?>"> <img src="http://static.ak.fbcdn.net/rsrc.php/z2Y31/hash/cxrz4k7j.gif"> </a> 
    <?php 
    else: 
    ?> 
    <div> Using JavaScript &amp; XFBML: 
      <fb:login-button></fb:login-button> 
     </div> 
    <?php 
    endif; 
    ?> 
    <h3>Session</h3> 
    <?php 
     if($me): 
    ?> 
    <pre><?php 
      print_r($session); 
    ?></pre> 
    <h3>You</h3> 
    <img src="https://graph.facebook.com/<?php 
      echo $uid; 
    ?>/picture"> <?php 
      echo $me['name']; 
    ?> 
    <h3>Your User Object</h3> 
    <pre><?php 
      print_r($me); 
    ?></pre> 
    <?php 
     else: 
    ?> 
    <strong><em>You are not Connected.</em></strong> 
    <?php 
     endif; 
    ?> 
    <?php 
      print_r($me); 
    ?> 
    </body> 
    </html> 

Когда я нажимаю «Вход». Он открывает окно и разрешает разрешение. Он освежает окно. только для отображения одного и того же контента. когда я делаю print_r($me), ничего не видно.

Когда я регистрирую настройки приложения. Приложение установлено в моей учетной записи fb.

EDIT

enter image description here

enter image description here

+7

** НИКОГДА НИКОГДА ** не делитесь своим приложением с помощью ** ANYONE ** !! Я предлагаю вам сгенерировать новый код немедленно! – ifaour

+0

@ifaour я изменил несколько символов :) Спасибо –

+0

Я вижу. Взгляните на это [статья] (http://www.masteringapi.com/tutorials/how-to-develop-your-facebook-application-locally/6/) и [это] (http://stackoverflow.com/questions/5133075/running-facebook-application-on-localhost) ответ. – ifaour

ответ

2

Убедитесь, что Canvas URL вы создали в конфигурации приложения является то же самое, что тот, который вы выполняете код.

Если это не одно и то же, это обычное поведение.

+0

Я добавил скриншоты .. его то же самое. Я перенаправил localhost.com на localhost в файл хостов Windows. –

+0

Я получаю «FB.login(), когда пользователь уже подключен. »в консоли –

+1

Честно говоря, я никогда не пробовал с localhost как Canvas URL, я всегда работаю с онлайн-сервером. Вы пробовали с этой опцией? –

1

Я думаю, что URL-адрес холста не настроен хорошо в соответствии с вашим приложением. вы должны настроить его, иначе это общий феномен.

Смежные вопросы