2010-05-09 80 views
1

Iam試圖構建基於PHP的Facebook應用程序。該應用程序在Canvas上作爲iFrame在我自己的Webhost上運行。PHP應用程序運行失敗

我已經包括了來自Facebook的PHP最新的客戶端庫:Facebook的PHP-SDK-94fcb13

批准我的申請IAM嘗試使用Facebook連接,就像隨客戶端的例子中,用戶。一切工作正常的第一次登錄,但是當我點擊F5鍵重新加載頁面,會話丟失,我不得不再次登錄。當我在Facebook畫布外調用我的應用程序時,一切都很好。

Iam不確定,但我認爲我的瀏覽器(Chrome/FireFox - Ubuntu)不允許在iFrame中存儲cookie。

有人知道這個問題的解決方案嗎?下面是源代碼的某些部分:

$facebook = new Facebook(array(
    'appId' => 'x', 
    'secret' => 'x', 
    'cookie' => 'true', 
)); 

$session = $facebook->getSession(); 
$facebook->setSession($session); 


$me = null; 
// Session based API call. 
if ($session) { 
    try { 
    $uid = $facebook->getUser(); 
    $me = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    } 
} 

// login or logout url will be needed depending on current user state. 
if ($me) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl(); 
} 

回答

1

解決:-)

我已經錯過了在安裝配置basedomain。

在「Conntect」選項卡上,您必須將Basedomain設置爲您的主機。

實施例:應用程序正在​​下運行比設定basedomain 到myapp.com

現在該cookie被正確地存儲。

1

PHP通過cookie值傳遞會話ID,如果它不能夠發送,通過GET參數發送如* .PHP?PHPSESSID ......

它會迷路如果u使用頭()重定向,溶液追加.SID在URL,

標題( 「等等等等」 .SID);

希望它可以幫助你..

+0

您必須爲查詢字符串拼接的SID常數前加一個'?'或'&'字符。即:'header('my/uri?'。SID)'或'header('my/uri?my = param&'。SID)'爲了讓你的代碼工作。 – 2012-04-17 17:40:11

相關問題