我刚刚开始使用最新的facebook SDK(5.0)。自从我上次使用它已经有好几年了,有一件事似乎无法解决......
按照示例代码进行操作:https://developers.facebook.com/docs/php/howto/example_facebook_login/5.0.0
我能够获得完美的登录功能。我的问题是,当你没有从Facebook重定向时,如何在下一页加载时保持此登录活动?
您曾经能够存储用户访问令牌,然后重用该令牌以保持会话的身份验证。在SDK的5.0版本中,我没有看到这样做的方法,而且我很遗憾你是如何保持登录状态的。
我不会在这里问这个问题,但是我已经找了好几天了,并且已经找到了大量使用旧代码的文章,这些代码与我正在尝试使用的当前5.0 sdk不符。我猜这是一个很小的东西,我一直在寻找,但我喜欢你们给我的任何信息。
答案 0 :(得分:0)
在你给出的链接中的例子的末尾,有这一行:
$_SESSION['fb_access_token'] = (string) $accessToken;
,因此访问令牌存储在PHP会话中,然后可以在页面之间访问。
您还可以将其作为users表中的字段存储在数据库中。
以下优秀升级指南:
答案 1 :(得分:0)
我知道为时已晚,但我只是想留下一个答案作为记录。来自FB official doc:
$fb = new Facebook\Facebook([
'app_id' => '{app-id}',
'app_secret' => '{app-secret}',
'default_access_token' => '{access-token}',
'enable_beta_mode' => true,
'default_graph_version' => 'v2.3',
'http_client_handler' => 'guzzle',
'persistent_data_handler' => 'memory',
'url_detection_handler' => new MyUrlDetectionHandler(),
'pseudo_random_string_generator' => new MyPseudoRandomStringGenerator(),
]);
如果您未在配置中提供default_access_token 选项,或者您希望使用与默认值不同的访问令牌, 你可以显式地将访问令牌作为参数传递给get(), post()和delete()方法。
$res = $fb->get('/me', '{access-token}');
$res = $fb->post('/me/feed', ['foo' => 'bar'], '{access-token}');
$res = $fb->delete('/{node-id}', '{access-token}');