我正在使用适用于Facebook Connect的JS SDK和PHP SDK的v3。在查看示例代码here时,有一个我想知道的部分(由于长度,我有点压缩)
// Get User ID
$user = $facebook->getUser();
// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
// Login or logout url will be needed depending on current user state.
if ($user)
$logoutUrl = $facebook->getLogoutUrl();
else
$loginUrl = $facebook->getLoginUrl();
注销代码的开头和位置的大评论与我有关。他们似乎暗示getUser()
并不保证获取用户ID意味着一切都有效,您仍然必须再次联系Facebook(在此示例中仅获取用户个人资料信息)以完全验证外包是否正常。这是真的?
我问的理由是我想要删除代码(在这种情况下是不必要的后端请求)我不需要和我的pourposes我不需要每个页面加载的用户整个用户配置文件,我如果用户已登录,则只需要一个FB ID。
答案 0 :(得分:1)
你的假设是正确的。在大多数情况下,调用$facebook->getUser();
是一项测试。您将始终必须检查会话是否有效。
答案 1 :(得分:0)
如果您只需要fb用户ID,那么您只能这样做。
$user_id = $facebook->getUser();
if($user_id){
//use this user id to proceed
}else{
//user not logged in
}