どちらの例でも、ユーザーはログインしたままにする必要があります。必要なログイン データは Cookie に保存され、再利用されます。
何が問題なのか: 「$user = $facebook->getUser();」ユーザーがログインしていても呼び出しが失敗することがあります。私のアドバイスは、その呼び出しに依存するのではなく、以下の try/catch ブロックにスキップして、そこからユーザーを設定することです。
{ $user_profile = $facebook->api('/me'); を試してください。$user = $user_profile['user_id']; } キャッチ (FacebookApiException $e) { $user_profile = false; $user = null; }
これはより信頼できるように見えるためです。
それがなければ、すべて自分でコントロールできます。手順は次のとおりです。
- Javascript に Cookie を使用しないように指示する
- ユーザーをログインさせ、「getAccessToken」関数を使用して、ログインしているユーザーのアクセス トークンを取得します。それを自分の名前/期間のCookieに保存します。
- 次にページが読み込まれたときに、作成したアクセス トークン Cookie を確認し、「setAccessToken」を使用してから、同じ try/catch ブロックに従います。ユーザーが無効を返した場合は、アクセストークンがユーザーによって無効にされたことを意味するため、独自の Cookie をクリアします。
この最後のアプローチは必要ありません (セッション/デバイス間でトークンを共有する場合や、オフライン アクセスを希望する場合を除きます)。それはまさに facebook SDK が行うことですが、より多くのプロセスを制御および理解するのに役立ちます。
最後に、すべての login / getAccessToken / store cookie メソッドを JavaScript を介して実行できるため、ページを更新することなくユーザーをログインさせて記憶させることができます。auth.login で適切なアクションを確認して、Cookie を記憶し、ページの内容を変更してください。ページをリロードしないでください。
Cookie は、ユーザーが次にページを更新したり、サイトに戻ったりしたときに、PHP によって読み取られます。ログアウト時に Cookie をクリアすることを忘れないでください。
だから、あなたはあなたがやりたいことをすることができます、はい。