1
<?php
  require_once('facebook.php');
  $config = array(
    'appId' => 'xxxxx',
    'secret' => 'xxxxx',
  );

  $facebook = new Facebook($config);
  $user_id = $facebook->getUser();
?>
<html>
  <head></head>
  <body>

  <?php
    if($user_id) {
      try {

        $user_profile = $facebook->api('/me','GET');
        echo "Name: " . $user_profile['name'];

      } catch(FacebookApiException $e) {
        $login_url = $facebook->getLoginUrl(); 
        echo 'Please <a href="' . $login_url . '">login.</a>';
        echo "1";
        error_log($e->getType());
        error_log($e->getMessage());
      }   
    } else {
      $login_url = $facebook->getLoginUrl();
      echo 'Please <a href="' . $login_url . '">login.</a>';
     echo "2";
    }
  ?>

  </body>
</html>

当我访问 mysite.com/fbconect.php 时,它是一个带有 LOGIN 链接的白页。当我单击登录时,它将进入 Facebook 页面登录。登录后,我返回 mysite.com/fbconect.php 然后显示,登录链接再次回显“1”。mysite.com 的 URL 变成了 mysite.com/fbconect.php?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx。我的代码有什么问题?

4

1 回答 1

4

您的代码没有任何问题。

确定:

  1. 用于测试的 facebook 用户已授权该应用程序
  2. 这段代码刚刚运行到部署在两个指定网站上的 PHP 页面:
    • Facebook Developers网站-> App > YourApp > Basic-> App Domains
    • Facebook Developers网站-> App > YourApp > Basic-> Website with Facebook Login

在此处输入图像描述

也许您使用尚未接受您的 fb 应用程序的用户登录。在这种情况下,您将看到“ Please login.1

如果您会看到“ Please login.2 ”,请确定您的代码已被捕获并出现异常。例如,如果您阅读以下内容:

OAuthException
Error validating access token: User YYYYYYYY has not authorized application XXXXXXXXXXXXXXXX.

您的 Facebook 用户很可能已将您的应用从他/她的列表中删除。或者如果你看到

Couldn't connect to host 

这意味着您正在使用的系统很可能会阻止传出连接。

如果您想要一个已经接受您的 fb 应用程序的测试用户,您可以从Facebook Developers站点创建一个进入“ Apps > YourApp > Developer Roles

如果您想从用户那里获得授权,您可以更改您的代码:

<?php
  require_once('facebook.php');
  $config = array(
    'appId' => 'xxxxx',
    'secret' => 'yyyyyy',
  );

  $facebook = new Facebook($config);
  $user_id = $facebook->getUser();
?>
<html>
  <head></head>
  <body>

  <?php
      function render_login($facebook) {
          $canvas_page = 'http://www.yoursite.com/';
          // HERE YOU ASK THE USER TO ACCEPT YOUR APP AND SPECIFY THE PERMISSIONS NEEDED BY
          $login_url = $facebook->getLoginUrl(array('scope'=>'email,user_photos,friends_photos', 'redirect_uri'=>$canvas_page));
          echo 'Please <a href="' . $login_url . '">login.</a>';
      }

    if($user_id) {
      try {

        $user_profile = $facebook->api('/me','GET');
        echo "Name: " . $user_profile['name'];

      } catch(FacebookApiException $e) {
        render_login($facebook);
        echo "1";
        error_log($e->getType());
        error_log($e->getMessage());
      }
    } else {
       render_login($facebook);
       echo "2";
    }
  ?>

  </body>
</html>

希望这可以帮助。

于 2013-11-08T14:06:49.177 回答