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

Is the FB PHP SDK's getAccessToken() a reliable way to retrieve a user's auth token?

本文关键字:令牌 身份验证 方法 用户 检索 SDK PHP getAccessToken FB      更新时间:2023-09-26

所以我有一个FB应用程序,在某些情况下,我需要我的Javascript使用与index.php位于同一域中的php文件将内容加载到div中。对于其中一些,我想确保用户仍然有效和/或需要身份验证令牌和FB用户ID。我通过在 javascript 注入的 ajax 中创建一个 FB PHP SDK 实例并使用 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;
}