2011-10-24 102 views
0

當用戶訪問我的網站時,我曾打開一個新窗口對用戶進行身份驗證,並通過我的應用程序請求許可(稱爲UseCase1)。但是當用戶已經登錄時,我試圖通過PHP SDK獲取已登錄的用戶信息,以便我不需要打開新窗口並檢查相同的內容(您將避免打開一個新的窗口,該窗口在同時由於用戶已經登錄)。但getUser()方法不會返回任何東西。當我通過UseCase1(打開自動關閉的新窗口)時,同樣的方法工作正常。 下面是我想使用的代碼:使用PHP SDK的Facebook登錄驗證無法正常工作?

$facebook = new Facebook(array(
       'appId' => $appId, 
       'secret' => $appSecret, 
       'oauth' => true 
       )); 

      $me = $facebook->getUser(); 
      if ($me) { 
       try { 
       $user_profile = $facebook->api('/me'); 
       } catch (FacebookApiException $e) { 
       //code to redirect to login url 
       // USECASE1 
       // use $facebook->getUser() one USECASE1 is over 
       // now the user info is generated properly 
       } 
      }     

所有時代的用戶通過USECASE1會(但有一個空的窗口,因爲用戶登錄和已驗證的應用程序),即使他已經登錄並且之前已經對應用程序進行了身份驗證。

任何想法,爲什麼這種情況正在發生

回答

0

在你的代碼,如果用戶是找「USECASE1」,那麼它表明「$我」被設定,因爲它讓你的try/catch。

使用$me = $facebook->getUser();不是測試用戶是否已接受您的應用程序的權限。

我懷疑拋出'FacebookApiException'異常的原因是因爲您還沒有獲得您的用戶權限。

我建議你閱讀的認證流程和示例PHP SDK認證流程,請訪問以下鏈接:

http://developers.facebook.com/docs/reference/php/facebook-api/

http://developers.facebook.com/docs/authentication2/

+0

庫爾頓嗨, 我忘了提及的是,USECASE1是也稱爲if塊外部,通過日誌我已經檢查過,正在調用的USECASE1是否是塊外的一個。所以,$我永遠不會被設置。正如我所說的流程超出了if塊,然後到USECASE1,然後$ facebook-> getUser()工作正常。 –