5

助けが必要です。私はこの問題に1か月間取り組んでいます!!

PHPとphp-sdk3.1.1を使用して、自分のWebサイトにFacebook接続ログインを実装したいと思います。簡単に言うと、私のコードはオフライン(ローカルホスト上)で機能しますが、オンラインでは機能しません。その結果、「リダイレクトループが多すぎます(Chrome上)」:エラー310(net :: ERR_TOO_MANY_REDIRECTS):リダイレクトが多すぎます。

これが私のコードです:

1 / facebook connect SDKをロードして初期化します:

    require 'src/facebook.php';
    $facebook = new Facebook(array(
        'appId'  => '209633612480053',
        'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    ));

facebook-developperページで2つのアプリを作成したことに注意してください。1つはオフラインテスト用で、もう1つはオンラインテスト用です。また、テスト時には、appId / secretの2つのペア(オンラインとオフライン)を正しく切り替える必要があります。だから、それは悪いfacebbokの問題ではありません-initを接続します。

2 /ユーザー情報を取得しようとしています:

  $uid = $facebook->getUser();

  if($uid)
  {
     /*
      * Get user information.
      */
     $user = $facebook->api('me/');
     print_r($user); // Display user info.
  }
  else
  {
     /*
      * Redirect to FB login URL to allow access.
      */
     $loginURL = $facebook->getLoginURL();
     echo '<script> top.location.href=\''.$loginURL.'\'</script>';
  }

それはそれと同じくらい簡単です:ユーザーicがFacebookに接続している場合は、その情報を表示します。そうでない場合は、Facebookのログインページにリダイレクトしてアクセスを許可します。

オフラインでは完全に機能しますが、オンラインではChromeエラーが発生します。

This webpage has a redirect loop
The webpage at https://www.facebook.com/dialog/oauth?client_id=209633612480053&redirect_uri=http%3A%2F%2Fwww.bluward.com%2Foauth%2Ffacebook&state=551f60cd4be6cd8ed1622f8168a5219a#_=_ has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer.

いくつかの追加情報:オンラインでは、1and1ホストプロバイダーを使用しています。オフラインサーバー(MAMP Pro)と同じサーバー構成にするために、samsphp.iniファイルをアップロードしました。

誰かがアイデアを持っているか、同様の問題が発生した場合は、喜んでお手伝いさせていただきます。

よろしくお願いします。

アップデート:

問題のある行に焦点を合わせるようにコードを更新したので、Facebookのログインページにリダイレクトする代わりに、リダイレクトURLを表示するので、クリックしてログインするだけです。

  $uid = $facebook->getUser();

  if($uid)
  {
     /*
      * Get user information.
      */
     $user = $facebook->api('me/');
     print_r($user); // Display user info.
  }
  else
  {
     /*
      * Redirect to FB login URL to allow access.
      */
     $loginURL = $facebook->getLoginURL();
     echo $loginURL; // <-- HERE I CHANGED THE CODE TO DISPLAY LOGIN URL
  }

私が気付いたのは、Facebookが私のスクリプトページに無限にリダイレクトしているということです。codeURLバーのパラメータのみが変更されます。

では、なぜfacebbokはユーザー情報を提供せずにスクリプトページにリダイレクトするのですか?

どうか、何か考えはありますか?

4

2 に答える 2

5

この問題が発生しました。私の場合、SDK から base_facebook.php を編集する必要がありました。

public static $CURL_OPTS = array(
    CURLOPT_CONNECTTIMEOUT => 10,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 60,
    CURLOPT_USERAGENT      => 'facebook-php-3.2',
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSL_VERIFYHOST => false,
);

手動で追加した最後の 2 つのオプション。

于 2013-09-04T08:35:27.960 に答える
0

Chrome ブラウザーでも同様の問題があり、Cookie は常に正しくないか空でした。

次に、 Herokuから facebook の例をダウンロードしました(js リダイレクトの代わりにポップアップ ウィンドウをログインとして使用します)。ウェブサイトのベース URL がサーバーのルート URL (例: localhost/somedirectory/)でない場合、Chrome では機能しないことに気付きました。. しかし、仮想ホストを作成すると、機能するように見えます。

アプリケーションの index.php の例をここで見ることができますhttps://gist.github.com/2845986

于 2012-05-31T20:28:49.973 に答える