如何使用新的 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 访问令牌的用户,并且我已经从数据库中读取了值,但我想知道如何获得以下逻辑:
- 如果存在则从数据库读取访问令牌
- 检查访问令牌的有效性
- 如果无效,获取新的访问令牌
- 请求长期访问令牌
- 将
$accessToken
的值设置为从数据库获得的有效访问令牌,或者如果 invalid/inexistent,则通过 Facebook SDK 获得。
请注意,我使用数据库没有问题,因此我们可以跳过 loading/storing 访问令牌 from/into 数据库的步骤。有人知道我该如何实现吗?
FacebookSession
class 有一个方法 getToken
– 所以一旦你成功完成登录流程,它就会给你用户的访问令牌。至于检查令牌是否仍然有效,它也有一个 validate
方法。
无需登录即可检查令牌的有效性,您只需使用该令牌创建会话即可。
顺便说一句,如果用户已经登录到您的应用程序一次,那么在随后调用登录对话框时,他们将直接从 Facebook 重定向回您的应用程序,不需要任何额外的用户交互(只要他们登录到 Facebook 本身。)
我们打算使用 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
的值设置为从数据库获得的有效访问令牌,或者如果 invalid/inexistent,则通过 Facebook SDK 获得。
请注意,我使用数据库没有问题,因此我们可以跳过 loading/storing 访问令牌 from/into 数据库的步骤。有人知道我该如何实现吗?
FacebookSession
class 有一个方法 getToken
– 所以一旦你成功完成登录流程,它就会给你用户的访问令牌。至于检查令牌是否仍然有效,它也有一个 validate
方法。
无需登录即可检查令牌的有效性,您只需使用该令牌创建会话即可。
顺便说一句,如果用户已经登录到您的应用程序一次,那么在随后调用登录对话框时,他们将直接从 Facebook 重定向回您的应用程序,不需要任何额外的用户交互(只要他们登录到 Facebook 本身。)