1

フェイスブックコネクトをphpで使用しようとしていますが、セッションが破棄された後もユーザーが自分のサイトにログインしたままでいることが重要です。

SDKからwith_js_sdk.phpの例を実行しました。この場合、ユーザーはすべてのセッションで再度ログインする必要があります。example.phpメソッドでは発生せず、ユーザーは永久にログインしたままになります。

なぜですか?そして、最初の方法でユーザーを常にログインさせることは可能ですか?

ちなみに、ログイン時にページを更新したくないので、PHP+JSコンボが必要だと思います。それは本当ですか?

ありがとうございました...

4

1 に答える 1

1

どちらの例でも、ユーザーはログインしたままにする必要があります。必要なログイン データは Cookie に保存され、再利用されます。

何が問題なのか: 「$user = $facebook->getUser();」ユーザーがログインしていても呼び出しが失敗することがあります。私のアドバイスは、その呼び出しに依存するのではなく、以下の try/catch ブロックにスキップして、そこからユーザーを設定することです。

{ $user_profile = $facebook->api('/me'); を試してください。$user = $user_profile['user_id']; } キャッチ (FacebookApiException $e) { $user_profile = false; $user = null; }

これはより信頼できるように見えるためです。


それがなければ、すべて自分でコントロールできます。手順は次のとおりです。

  1. Javascript に Cookie を使用しないように指示する
  2. ユーザーをログインさせ、「getAccessToken」関数を使用して、ログインしているユーザーのアクセス トークンを取得します。それを自分の名前/期間のCookieに保存します。
  3. 次にページが読み込まれたときに、作成したアクセス トークン Cookie を確認し、「setAccessToken」を使用してから、同じ try/catch ブロックに従います。ユーザーが無効を返した場合は、アクセストークンがユーザーによって無効にされたことを意味するため、独自の Cookie をクリアします。

この最後のアプローチは必要ありません (セッション/デバイス間でトークンを共有する場合や、オフライン アクセスを希望する場合を除きます)。それはまさに facebook SDK が行うことですが、より多くのプロセスを制御および理解するのに役立ちます。


最後に、すべての login / getAccessToken / store cookie メソッドを JavaScript を介して実行できるため、ページを更新することなくユーザーをログインさせて記憶させることができます。auth.login で適切なアクションを確認して、Cookie を記憶し、ページの内容を変更してください。ページをリロードしないでください。

Cookie は、ユーザーが次にページを更新したり、サイトに戻ったりしたときに、PHP によって読み取られます。ログアウト時に Cookie をクリアすることを忘れないでください。

だから、あなたはあなたがやりたいことをすることができます、はい。

于 2012-06-10T11:13:03.217 に答える