2011-08-20 151 views
0

我正在寫一個Facebook應用程序,該應用程序獲取有關用戶的一些信息並對其進行一些操作。在Facebook上獲取用戶信息

我得到了用戶的權限是這樣的:

$facebook = new Facebook(array(
    'appId' => APPID, 
    'secret' => 'APPSECRET', 
)); 

$logoutUrl = $facebook->getLogoutUrl(); 

(默認權限是USER_INFO)

$user_profile = $facebook->api('/me'); 

在用戶登錄後,應用程序要經過幾個PHP頁面,並在顯示一個味精。 在最後一個PHP頁面中,我嘗試再次獲取用戶信息。

$facebook = new Facebook(array(
     'appId' => APPID, 
     'secret' => 'APPSECRET', 
    )); 

    $logoutUrl = $facebook->getLogoutUrl(); 
    $user_profile = $facebook->api('/me'); 

我的問題是,在某些瀏覽器(Chrome)上它可以正常工作,而在其他瀏覽器上(IE)則不會。
我得到一個Oauth異常,我沒有一個有效的認證密鑰。

你明白這是爲什麼嗎?

回答

0

在這種情況下啓動認證流程。 ,如果這仍然發生,看看這是否實現cookie設置。

嘗試正確設置標題。

0

的事情是很簡單的:

首先,你的init的Facebook:

$facebook = new Facebook(array(
    'appId' => APPID, 
    'secret' => 'APPSECRET', 
)); 

然後你就得到了用戶

$user = $facebook->getUser(); 

最後,你測試是否有用戶與否,如果在那裏你做所有的facebook api請求並生成註銷url,如果沒有,你會得到登錄網址並將瀏覽器重定向到該url。

if ($user){ 
    $user_profile = $facebook->api('/me'); 
    $logoutUrl = $this->facebook->getLogoutUrl(); 
else{ 
    $loginUrl = $facebook->getLoginUrl(array('scope' => 'email,user_birthday')); 
    echo '<script type="text/javascript">top.location.href = "'.$loginUrl.'"</script>'; 
} 

這應該適用於所有的瀏覽器,因爲我測試了,那麼好的運氣。