2011-09-05 130 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); 
}