【问题标题】:Facebook Connect Fetching user DataFacebook Connect 获取用户数据
【发布时间】:2011-07-16 02:09:54
【问题描述】:

我遵循 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 帐户中。

编辑

【问题讨论】:

  • 永远不会任何人分享您的应用程序秘密!我建议你立即重新生成一个新代码!
  • @ifaour 我改变了一些字符 :) 谢谢
  • 我明白了。看看这个articlethis 的答案。
  • @ifaour 我跟着那个。当我单击登录按钮时,它显示“用户已连接时调用 FB.login()”。在控制台中:(
  • 一个非常重要的注意事项是删除站点域,显然这是错误的。也看看this bug,它可能是相关的。

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


【解决方案1】:

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

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

【讨论】:

  • 我已经添加了截图..它是一样的。我已将 localhost.com 重定向到 Windows 主机文件中的 localhost ..
  • 我得到“当用户已经连接时调用 FB.login()。”在控制台中
  • 老实说,我从未尝试使用 localhost 作为 Canvas URL,我总是使用在线服务器。你试过这个选项吗?
  • 因为我们正在与一个团队一起在 SVN 上进行开发。急于在本地设置它:(
  • 我会尝试上传只是为了看看这是否是问题所在。无论如何,有软件可以让你在提交时自动上传(例如 phpStorm)到 SVN 服务器
【解决方案2】:

我认为画布 url 没有按照您的应用程序配置好。 必须要配置,否则是普遍现象。

【讨论】:

    猜你喜欢
    • 2011-07-21
    • 2011-04-27
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    相关资源
    最近更新 更多