0

问题:我可以从本地主机运行我的 Facebook 应用程序吗?

描述:我想在我的网站页面上获取 Facebook 墙贴。为了测试,我创建了一个 facebook 应用程序并将站点 URL 设置为“http:localhost:8088/fb/”并将应用程序域设置为“localhost”。现在我想获取用户 ID,以便我可以访问 facebook 墙上的帖子。但是得到的只是用户 ID 等于零。我已经检查了很多次。但一切似乎都是正确的。所以我想知道我们可以使用本地主机作为网站网址吗?我可以通过从本地主机运行我的代码来获取用户 ID。下面是我的代码。

<?php 
include_once "facebook.php";



$facebook = new Facebook(array(
               'appId' => '<app id>',
                'secret' => '<app secret>',
                'cookie' => true,
            ));

$uid = $facebook->getUser();
echo $uid;
$me = null;
if ($uid) {
  try {

   $me = $facebook->api('/me');
    $feed = $facebook->api('/me/feed/');
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}

$params = array(
  'scope' => 'read_stream',
  'redirect_uri' => 'http://localhost:8088/fb/feeds.php'
);
if ($uid) {

    $logoutUrl = $facebook->getLogoutUrl();
} 
else {
    $loginUrl = $facebook->getLoginUrl($params);
}

?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
  <head>
    <title>php-sdk</title>
  </head>
  <body>
    <?php if($uid)

    {
    ?>
    <a href="<?php echo $logoutUrl; ?>">Logout</a>
    <?php
  }
else
{
?>
<a href="<?php echo $loginUrl; ?>">Login</a>
<?php
}   
     ?>

    <?php if ($me): ?>
    <?php
    echo "<pre>";
    print_r($feed);
    echo "</pre>";
    ?>
    <?php endif ?>
 </body>
</html>

请告诉我这里有什么问题。有没有我需要执行的设置。我将非常感激。

4

4 回答 4

1

在 localhost 上测试 Facebook api 的更好方法是首先为您的 Web 应用程序创建一个虚拟主机,例如 yourapp.local,然后在您的 Facebook 应用程序信息中相应地设置 URL。您可以为本地和远程站点创建单独的 Facebook 应用程序。

于 2012-11-28T09:38:15.763 回答
1

是的,您可以从 localhost 环境运行您的应用程序。除了不需要在应用程序域中添加 localhost 并且您的站点 url 应该是之外,您所做的一切都是正确的

http:// 本地主机:8088 /fb/

而不是“http:localhost:8088/fb/”

于 2012-11-28T09:23:10.950 回答
0

如果您的应用程序中有 facebook 聚合(对象+操作),我敢肯定您不能这样做。因为他们需要通过facebook直接访问

于 2012-11-28T09:52:48.947 回答
0

在大多数情况下你可以。只是 iframe 的 Facebook 应用程序不需要连接到您的主机 - 只有您/您的浏览器才需要。

需要注意的两件事:

  1. 确保您的本地主机上有 SSL (https://)。如果没有,请在您的测试 Facebook 帐户设置中禁用 SSL。

  2. Facebook 需要访问您的主机的一种情况包括共享在您的应用程序中托管的 URL 或图像。测试本地应用程序时使用外部占位符。

于 2012-11-28T09:29:47.307 回答