如何使用新的 Facebook SDK 获取 Facebook 用户访问令牌

How to obtain Facebook user access token using new Facebook SDK

我们打算使用 Graph API v.2.2 切换到 Facebook PHP SDK 4.0.0。我对这个新的 Facebook SDK 很陌生,我正在尝试一下。在这一刻,我正在尝试获得特权,就像这样:

/* PHP SDK v4.0.0 */
/* make the API call */
Facebook\FacebookSession::setDefaultApplication($appID, $appSecret);
$session = new Facebook\FacebookSession($accessToken);
/* PHP SDK v4.0.0 */
/* make the API call */
$request = new Facebook\FacebookRequest(
  $session,
  'GET',
  '/me/permissions'
);
$response = $request->execute();
$graphObject = $response->getGraphObject();

如果我有正确的 $appID$appSecret$accessToken 值,这会非常有效。对于 $appID$appSecret 我认为没有问题,因为它们是应用程序级别的设置,从开发人员页面获得。但是,我正在为如何获得 $accessToken 而苦苦挣扎。我一直在测试一个拥有有效 facebook 访问令牌的用户,并且我已经从数据库中读取了值,但我想知道如何获得以下逻辑:

请注意,我使用数据库没有问题,因此我们可以跳过 loading/storing 访问令牌 from/into 数据库的步骤。有人知道我该如何实现吗?

FacebookSession class 有一个方法 getToken – 所以一旦你成功完成登录流程,它就会给你用户的访问令牌。至于检查令牌是否仍然有效,它也有一个 validate 方法。
无需登录即可检查令牌的有效性,您只需使用该令牌创建会话即可。

顺便说一句,如果用户已经登录到您的应用程序一次,那么在随后调用登录对话框时,他们将直接从 Facebook 重定向回您的应用程序,不需要任何额外的用户交互(只要他们登录到 Facebook 本身。)