是FB PHP SDK';s getAccessToken()是检索用户的可靠方法';s身份验证令牌?

是FB PHP SDK';s getAccessToken()是检索用户的可靠方法';s身份验证令牌?,php,javascript,session,facebook-php-sdk,facebook-oauth,Php,Javascript,Session,Facebook Php Sdk,Facebook Oauth,因此,我有一个FB应用程序,在某些情况下,我需要我的Javascript使用与index.php位于同一域中的php文件将内容加载到div中。对于其中一些,我希望确保用户仍然有效和/或需要身份验证令牌和FB用户id。我通过在PHP文件中创建一个FB PHP SDK实例来实现这一点,该实例由javascript注入ajax,并使用getUser()和getAccessToken()。但是,我注意到,有时getAccessToken()调用会莫名其妙地失败,并报告它需要一个有效的访问令牌来执行操作

因此,我有一个FB应用程序,在某些情况下,我需要我的Javascript使用与index.php位于同一域中的php文件将内容加载到div中。对于其中一些,我希望确保用户仍然有效和/或需要身份验证令牌和FB用户id。我通过在PHP文件中创建一个FB PHP SDK实例来实现这一点,该实例由javascript注入ajax,并使用getUser()和getAccessToken()。但是,我注意到,有时getAccessToken()调用会莫名其妙地失败,并报告它需要一个有效的访问令牌来执行操作


getAccessToken()是确保用户登录FB的可靠(甚至是理想)方法,还是我应该做其他事情(例如,将我从签名请求解析的访问令牌存储在Javscript中,并将其作为变量传递给我正在注入的php文件)?谢谢。

最可靠的可能是获取他们的详细信息。在过去,我有一个“getUser”返回true的实例,但是用户没有实际登录。现在我也得到了他们的所有细节,这更可靠:

$facebook = new Facebook(array(
                            'appId' => FB_APP_ID,
                            'secret' => FB_APP_SECRET,
                            'cookie' => true
                    ));
$FB_UID=false;
try {
    $FB_UID = $facebook->getUser();
    // This verifies the user is actually logged in. teh above can return "true" but the following will crap out and throw exception
    $FB_me = $facebook->api('/me');  // 'birthday'
    // Not needed:
    // $FB_token = $facebook->getAccessToken();

} catch (FacebookApiException $e) {
    $FB_UID = false;
    $FB_me = false;
    // $FB_token = false;
}

我明白了,然后我就可以使用->api()调用来做一些事情,比如删除用户的FB请求,而不需要实际访问他们的访问令牌?是的-如果你没有使用“cookie”参数,你需要访问令牌(或者做一些奇特的事情,比如拥有访问令牌,存储在DB中供以后使用等等)。如果是这种情况,a)在用户已连接时存储访问令牌,当您想要使用该访问令牌时使用“setAccessToken()”,然后使用上面的“getUser”和“api(/me)”代码检查访问令牌是否仍然有效。