真的很奇怪,它似乎使用PHP SDK(v 3.2.2)丟失了Facebook會話($ user = 0)。 JS SDK需要重新加載我的頁面來恢復Facebook會話。此問題現在出現,然後,有時Facebook會話丟失,有時它工作得很好。Facebook PHP SDK會話丟失,需要JS SDK刷新
session_start();
// Run Facebook API
$facebook = new Facebook(array(
'appId' => $config['facebook']['id'],
'secret' => $config['facebook']['secret']
));
// Fetch user
$user = $facebook->getUser();
if($user) {
try {
// Just to be sure, add access token to each request
$user['access_token'] = $facebook->getAccessToken();
// Fetch user details
$user = $facebook->api('/me?access_token='.$user['access_token']);
}
catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
主要問題是$ user = $ facebook-> getUser();返回0.但是,當用戶實際連接時,JS SDK檢測到auth.login事件並重新加載頁面(另一個奇怪的事情,我使用auth.login,因爲auth.authResponseChange事件每秒都會觸發)。現在$ user = $ facebook-> getUser();返回用戶的uid。
window.fbAsyncInit = function() {
FB.init({
appId : appId,
channelUrl : '//domain.com/signon/channel.php',
status : true,
cookie : true,
xfbml : true
});
FB.Event.subscribe('auth.login', function(response) {
location.reload();
});
};
在Facebook開發我所定義的應用程序域(domain.com)和站點地址(http://domain.com/)。已嘗試使用/不使用結尾斜槓的Site Url,並未解決問題。
任何想法是怎麼回事,Facebook PHP SDK爲什麼不立即檢測用戶的會話/不斷丟失用戶的會話,需要重新加載?這個問題真的會導致糟糕的用戶體驗
非常感謝!
羅賓
調用'$ facebook-> setExtendedAccessToken();'爲我工作,謝謝。 – Eldar
我有一個應用程序的網站在根和iframe小部件/小部件。 除了你在基地Facebook的變化,我還必須爲/ widgets中的iframe小部件創建一個新的應用程序。現在根域的會話似乎沒問題。 –
我回過頭來看,會話很好,但用戶在頁面閒置幾分鐘後仍然返回0。 –