2012-05-13 15 views
2

質問はタイトルと同じです。私は、最新のphp-sdk(v3.1.1)を使用して、サーバー側の認証フローを操作しています。

Chromeに2つのタブがあり、1つは自分のFacebookページ、もう1つはphpテストページです。

  • $facebook->getUser()はまだ私がログインした場合でも0を返し、私はログアウト時に
  • $facebook->getUser()
  • はまださえIDを返します。これらの2つの問題は、何回も起こります。

私はこれの回避策を実行する必要があります。そこにアクティブなセッションがありますかないことを確認するために提供access_tokenはしてグラフAPI要求を開始してみてください、と$response->error->type == "OAuthException"かどうかを確認。

$facebook->getUser()「安定して」使用する方法はありますか?私はSOを通してたくさんの検索をしましたが、まだphp-sdk 3.1.1のベスト・アンサーが見つかりませんでした。

非常に感謝します。ありがとう。

答えて

9
  1. ログイン。 documentation example of FB SDKによると、getUser()は、ログアウトしてもuserIdを返しますが、FBアカウントに関連付けられたCookieを持っています。検出するため あなたの中にログインしたユーザーは、あなたがベースscopeを渡していることを確認してください(このURLに従うことによって、いない隣のタブに、ユーザーがアプリにログインする作るのアプリにログインするには

    $user = $facebook->getUser(); 
    //Check Access token 
    if ($user) { 
        try { 
         $user_profile = $facebook->api('/me'); 
        } catch (FacebookApiException $e) { 
         $user = null; 
        } 
    } 
    if ($user) { 
        //logged-in 
    } else { 
        //not logged-in 
    } 
    

    を使用する必要がありますです

    $loginUrl = $facebook->getLoginUrl(
        'scope' => ... 
    ); 
    
  2. ログアウト:あなたのアプリによって実行されることを意図したアクション)に。あなたのPHPサーバは、セッションごとにいくつかの値のアクセストークンを保存しているようです。したがって、あなたのブラウザにログアウトしても、サーバはこれらのトークンを有効にしています。実際には、私は知らない、それはバグや機能ですが、ユーザーログアウト後にFacebookによって破壊されることはありません。私はこれらを使用しているこれらのトークン破壊すること

    $facebook->destroySession(); 
    

    私は毎回$facebook->getLogoutUrl()により、ユーザがログインアウトそれを呼んでいるが、

関連する問題