17

PHPAPIを使用して古いFBアプリを新しいグラフAPIに移行しています

私は2つのページを持っています:パブリックページ(ユーザーログインを必要としない)とプライベートページ(ユーザーログインを必要とする)

したがって、私のアプリケーションのすべてのphpページのコードは次のように機能します。

if (this_page_requires_user_login){
      $facebook = new Facebook(...) ;
      $session = $facebook->getSession ;
      if (!$session){
              $url =$facebook.getLoginUrl(array(next => current_page );
              echo "<fb:redirect url=$url/>" ;

}
// the rest of the code continues here

ご覧のとおり、この作業方法では、すべてのページがログインURLに転送されますが、動作している間は低速で、&session={bla}文字列が非常に単一のURLに追加されます。

ユーザーをログインページにリダイレクトする前に、ユーザーがすでにログインしている場所を確認する方法が必要です。しかし、私はphpapiでそのようなメソッドを見つけることができません。これを行うための最良の方法は何ですか?

編集

これはトリックをするようでした

if ($session) {
  try {
    $me = $facebook->api('/me');
    if ($me) {
       // here comes your code for user who is logged in
    }
  } catch (FacebookApiException $e) {
    login()
  }
}else{
 login()
}

function login(){

  $url =$facebook.getLoginUrl(array(next => current_page );


      echo "<fb:redirect url=$url/>" ;
}
4

1 に答える 1

19

私があなたのコードを正しく読んでいる場合、セッションが返されない場合にのみ、リダイレクトを行いますか?Facebookの例のコメントによると、セッションを取り戻したとしても、それがまだ有効であるとは限りません。ログインしたユーザーを必要とするAPI呼び出しを試すだけで、確実にわかります。これは、ログイン/ログアウトのステータスを確実に判断するために私が見た中で最良の方法です。

if ($session) {
  try {
    $me = $facebook->api('/me');
    if ($me) {
      //User is logged in
    }
  } catch (FacebookApiException $e) {
    //User is not logged in
  }
}
于 2010-07-15T02:36:52.610 に答える