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

时间:2015-02-03 11:38:51

标签: php facebook facebook-graph-api facebook-php-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访问令牌的用户,我已经从数据库中读取了值,但我想知道如何获得以下逻辑:

  • 从数据库读取访问令牌(如果存在)
  • 检查访问令牌的有效性
  • 如果无效,请获取新的访问令牌
  • 请求长期访问令牌
  • $accessToken的值设置为从数据库获取的有效访问令牌,或者,如果无效/不存在,则通过Facebook SDK获取。

请注意,我使用数据库没有问题,因此我们可以跳过从/向数据库加载/存储访问令牌的步骤。有谁知道我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

FacebookSession类有一个方法getToken - 因此,一旦您成功完成登录流程,它将为您提供用户的访问令牌。至于检查令牌是否仍然有效,它也有一个validate方法 并且无需登录即可检查令牌的有效性,您只需使用该令牌创建会话。

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