2014-12-07 42 views
0

我正在升級我的php sdk for Facebook登錄我的web應用程序和PhoneGap也構建它的Android和iOS版本,並且誤解了哪個頁面(以及該頁面應該包含什麼內容)重定向到使用...FacebookRedirectLoginHelper頁面 - 它應該重定向到哪個頁面?

$ helper = new FacebookRedirectLoginHelper('example.com/XXXXX');

我的過程:我使用js sdk在用戶登錄到Facebook後獲取accesstoken,然後將此訪問令牌發送到我的服務器以存儲在數據庫中以供將來的服務器調用。

是example.com/XXXXX這個頁面有所有的代碼如..?

// start session 
session_start(); 
// init app with app id and secret 
FacebookSession::setDefaultApplication('xxx','yyy'); 
// login helper with redirect_uri 
$helper = new FacebookRedirectLoginHelper('example.com/app/'); 
// see if a existing session exists 
if (isset($_SESSION) && isset($_POST['fb_token'])) { 
// create new session from saved access_token 
$session = new FacebookSession($_POST['fb_token']); 
// validate the access_token to make sure it's still valid 
try { 
if (!$session->validate()) { 
$session = null; 
} 
} catch (Exception $e) { 
// catch any exceptions 
$session = null; 
} 
} 

感謝您的時間和幫助。

回答

0

該網頁腳本應該是這樣的:

// start session 
session_start(); 
// init app with app id and secret 
FacebookSession::setDefaultApplication('xxx','yyy'); 
// login helper with redirect_uri 
$helper = new FacebookRedirectLoginHelper('example.com/app/'); 
try { 
     $session = $helper->getSessionFromRedirect(); // returns a FacebookSession or null 
    } catch(FacebookRequestException $ex) { 

     echo '<br>FB error: ' . $ex->getMessage() . '<br>'; 
    } catch(\Exception $ex) { 

     echo '<br>Internal error: ' . $ex->getMessage() . '<br>'; 
    } 

我把這個腳本在控制器方法和存儲令牌之後我使用重定向。 希望有所幫助。

+0

謝謝Mirceac。我仍然失去了example.com/app/中的哪個頁面 - 是否與上面的腳本是相同的頁面? – Shaun 2014-12-13 01:47:59

+0

另外,如果我從js中首先從PhoneGap本機應用程序中的js中檢索令牌,則不需要通過POST將該令牌發送給php,並通過$ session = new注入該令牌FacebookSession($ _POST ['fb_token']); ? – Shaun 2014-12-13 01:51:32

+0

如果您已經在使用js sdk獲取訪問令牌並重新創建會話,那麼您應該使用「FacebookJavaScriptLoginHelper」(https://developers.facebook.com/docs/php/FacebookJavaScriptLoginHelper/4.0.0)來獲取會話。 – Mirceac21 2014-12-14 10:51:34