0

在此处输入图像描述

// Function for facebook login
    function facebook_login() {
      $output = array();
      // Create facebook object for user login.
      $config = array();
      $config['appId' ] = 'XXXXXXX';
      $config['secret'] = 'XXXXXXX';
      $config['cookie'] = true;

      session_start();
      $code = $_GET['code'];

      $facebook_user = null;

    // Create the facebook user object
      $facebook = new Facebook(array(
        'appId' => $config['appId'],
        'secret' => $config['secret'],
        'cookie' => $config['cookie'],
      ));


      // Get User ID
      $facebook_user = $facebook->getUser();

    // If facebook user id not equal to 0
      if ($facebook_user) {
        try {
          // Proceed knowing you have a logged in user who's authenticated.
          $user_profile = $facebook->api('/me');
          $output['facebookurl'] = 'user/register';

          return $output; // Returns a result.
        }
        catch (FacebookApiException $e) {
          drupal_set_message($e, 'error');
          $facebook_user = null;
        }
      }
      else {
        $facebook_params = array(
          'scope' => 'email',
          'redirect_uri' => 'http://localhost/mywebsite',
          'display' => 'popup',
          'code' => $code,
        );

        $output['facebookurl'] = $facebook->getLoginUrl($facebook_params); // Returns the facebook login url as result.
      }
    }

这是我用于 facebook 登录的 php 代码。某些事件会调用该facebook_login()函数并根据$output结果进行一些处理。

问题$facebook_user始终是 0,即我总是得到getLoginUrlas 输出。我已经尝试了与此问题相关的 stackoverflow 上的所有答案,但没有一个对我有帮助。

我正在我的本地主机上测试这个应用程序,并将站点 URL 设置为http://localhost/mywebsitefacebook 应用程序设置。

请帮忙!

4

1 回答 1

1

当您运行此代码时,您是否已登录 facebook 并遵循登录 URL?只有当用户添加了应用程序并且在您的网站上设置了 cookie 时,您的用户 ID 才会被返回。

只要您在 FB 上的应用设置也配置为指向 localhost,在 Localhost 上运行它就可以正常工作。

于 2012-08-07T11:47:36.390 回答