Facebook Connect获取用户数据

时间:2011-03-15 19:53:32

标签: facebook facebook-graph-api facebook-php-sdk

我已经关注了Facebook PHP SDK示例并创建了以下内容。

<?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帐户中。

修改

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

检查您在应用配置中设置的Canvas URL是否与您执行代码的URL相同。

如果不一样,这是一种常见行为。

答案 1 :(得分:1)

我认为画布网址没有按照您的应用程序进行配置。 你必须配置它,否则它是常见的现象。