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

时间:2012-05-08 21:53:51

标签: php javascript session facebook-php-sdk facebook-oauth

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

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

1 个答案:

答案 0 :(得分:0)

最可靠的可能是获取他们的详细信息。在过去,我有一个“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;
}