1

私が開発したウェブサイトへのアクセスは、facebookconnectを使用して行われます。

オフラインではすべて問題ありませんが、オンラインでは問題ありません。ナビゲーションエラーが発生します(Chromeを使用)「このウェブページにはリダイレクトループがあります」:

https://www.facebook.com/dialog/oauth?client_id=209633612480053&redirect_uri=http%3A%2F%2Fwww.bluward.com%2Faccess%2Flogin_facebook&state=299262ddf89afbf382452df89c9a2ce8&scope=email%2C+user_birthdayのWebページ+ user_location%2C + publish_stream&fbconnect = 1#=リダイレクトが多すぎます。このサイトのCookieをクリアするか、サードパーティのCookieを許可すると、問題が解決する場合があります。そうでない場合は、サーバー構成の問題であり、コンピューターの問題ではない可能性があります。

PHPコードは次のとおりです(CodeIgniterフレームワークを使用)。

public function login()
{
  // Get the FB UID of the currently logged in user
  $uid = $fb->getUser();

  // If the user has already allowed the application, you'll be able to get his/her FB UID
  if($uid) {

     try {
        $profile = $fb->api(array(  
            'method'      => 'users.getinfo',  
            'uids'        => $uid,  
            'fields'      => 'uid, first_name, last_name, pic_square, pic_big, sex, birthday_date, current_location, email'
        ));

        // Only the first user.
        $profile = $profile[0];
     } catch (FacebookApiException $e) {
        return false;
     }

     // Do stuff when already logged in.

     return $profile;

  } else {

     // If not, let's redirect to the ALLOW page so we can get access
     redirect($this->getLoginUrl(array(
         'scope'           => 'email, user_birthday, user_about_me, user_location, publish_stream',
         'fbconnect'       =>  1
     )));
  }
}

また、プロファイル情報に応じて、ユーザーがデータベースに既に存在するかどうかを確認してからログに記録し、データベースに存在しない場合はサインアップします。

アップデート:

FacebookのCookieをクリアすると、ログインページへのリダイレクトが成功し、メールアドレス/パスワードを入力できるようになります。

残念ながら、「ログイン」ボタンをクリックすると、上記と同じエラーメッセージが表示されます。

4

1 に答える 1

0

古いバージョンを使用しているように見えますか? php-sdk 3.1.1「最新バージョン」の問題を処理する方法は次のとおりです。


require 'src/facebook.php';
$facebook = new Facebook(array(
  'appId'  => '135669679827333',
  'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
  ));
$user = $facebook->getUser();
if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
$params = array(
  scope => 'read_stream,publish_stream,publish_actions,read_friendlists',
  //redirect_uri => $url
  );
  $loginUrl = $facebook->getLoginUrl($params);
  echo '<script> top.location.href=\''.$loginUrl.'\'</script>';
};
于 2012-04-14T17:33:14.863 に答える