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 出力を取得します。この問題に関連するすべての回答をスタックオーバーフローで試しましたが、何も役に立ちませんでした。

私は自分のローカルホストでこのアプリをテストしておりhttp://localhost/mywebsite、Facebook アプリの設定でサイト URL を に設定しています。

助けてください!

4

1 に答える 1

1

このコードを実行しているとき、Facebook にログインしてログイン URL に従っていますか? ユーザー ID は、アプリがユーザーによって追加され、Cookie がサイトに設定されている場合にのみ返されます。

これを Localhost で実行すると、FB のアプリ設定が localhost も指すように構成されている限り、正常に機能します。

于 2012-08-07T11:47:36.390 に答える