2012-01-24 7 views
0

私は次のコードを使用して、ユーザーがログインしているかどうかを認証しています。ユーザーはログインできますが、ログインボタンを2回クリックする必要があります。さらに、ログインボタンを2回クリックした後でも、ページの前の方の「ユーザー情報」の部分は、ログアウトして表示されます。PHP SDKログインが2回必要...最初に認識されない

ここにコードがあります。誰かがログインを処理する良い方法を提案できますか?

function isLoggedIn($facebook) { 
    if (isset($facebook) and $facebook->getUser() != 0) { 
     // UserID exists, but user may still not be logged in. Let's check: 
     try { 
      $facebook->api('/me', 'GET'); 
      // If this succeeds, then they are logged in. 
      return true; 
     } catch(FacebookApiException $e) { 
      // Some kind of error, so not logged in. 
      if(session_id() === '') 
       session_destroy(); 
      return false; 
     } 
    } else { 
     if(session_id() === '') 
      session_destroy(); 
     return false; 
    } 
} 

ありがとうございます!

+1

1回のログインクリックで作業し、これまで働いていましたあなたのアプリはFacebook(Canvas Page)にありますか? – ori

+0

いいえ、それは独自のウェブサイトです。 –

+0

私はまったく同じ問題を抱えています!そして、私はどこでも答えを見つけることができません:(あなたはこれでどこに行ったのですか? – Chud37

答えて

0
$facebook = new Facebook(array(/* the data */)); 
$user = $facebook->getUser(); 
if($user) { 
    //loged 
} else { 
    //not loged 
} 

さて、ここで十分

0

です...多分汚い簡単な修正ですが、私はそれが仕事を得るために必要な。 2回クリックするのはばかげている。

$user = $facebook->getUser(); 
    if($user) { 
     // do stuff cause user is now logged 
    } 
    if(isset($_GET['fb_logged']) && $user == 0) { 
     // not logged, would have to click twice but let's help that user. 
     header('Location: '.$loginUrl); 
    } 
0

私は同じ問題を抱えていたと私は$ Facebookのインスタンスを2回を開始して、1を使用して解決し、「offline_access」を追加し、それは今だけ

$facebook = new Facebook(array(/* the data */)); 
+0

'offline_access'パーミッションは既にかなり前に削除されています。 – CBroe

関連する問題