簡體   English   中英

如何檢查用戶是否使用新的facebook php api登錄

[英]How to check if user is logged in with new facebook php api

我正在使用PHP API將舊的FB應用程序遷移到新的圖形API

我有兩個頁面:公共的(不需要用戶登錄)和私人的(有)

所以我的應用程序中每個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。

在將用戶重定向到登錄頁面之前,我需要一種方法來檢查用戶已登錄的位置。 但我在php api中找不到這樣的方法。 最好的方法是什么?

編輯

這似乎可以解決問題

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/>" ;
}

如果我正確地讀取您的代碼,只有在沒有返回會話時才進行重定向嗎? 根據Facebook的例子中的評論,即使你回來了會議,你也不能認為它仍然有效。 只有嘗試一個需要登錄用戶的API調用才能確定。 這是我看到可靠地確定登錄/注銷狀態的最佳方式。

if ($session) {
  try {
    $me = $facebook->api('/me');
    if ($me) {
      //User is logged in
    }
  } catch (FacebookApiException $e) {
    //User is not logged in
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM