2011-09-05 153 views
1

我使用的是latest Facebook PHP SDK並希望簡單地訪問用戶數據:用PHP SDK應用程序授權

$facebook = new Facebook(array( 
    'appId' => 'xxx', 
    'secret' => 'yyy', 
    'cookie' => true 
)); 
$user = $facebook->getUser(); 
    if ($user) { // Checks if there is already a logged in user 
    try { 
    // Proceed knowing you have a logged in user who's already authenticated. 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 
else { 
    //Ask for bare minimum login 
    $login_url = $facebook->getLoginUrl(); 
    header("Location: ".$login_url); 
} 

我的問題是,$user是FB登錄,但$facebook->api('/me')不僅會失敗,但我不t也可以獲得App授權對話框。 我在做什麼錯?

+0

我收到以下錯誤'OAuthException:工作中的接入令牌必須用於查詢有關當前用戶的信息。「如何處理它。 – millebii

+0

這是一個不好的做法。因爲如果用戶沒有授權你的應用程序,他將繼續重定向到'$ login_url'! – ifaour

+0

@ifaour,對你來說最好的做法是什麼? – millebii

回答

1

終於找到了我的錯誤,以便備案:

$facebook = new Facebook(array( 
    'appId' => 'xxxx', 
    'secret' => 'yyyyy', 
    'cookie' => true 
)); 
$user = $facebook->getUser(); 
    if ($user) { // Checks if there is already a logged in user 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    // Will throw the very first time as the token is not valid 
    error_log($e); 
    $user = null; 
    } 
} 
// $user is null : $user is either not logged in or the token is not valid 
if(!$user) { //Ask for bare minimum login 
    $login_url = $facebook->getLoginUrl(); 
    header("Location: ".$login_url); 
}