我试图建立什么本质上是使用Facebook Login日志使用户登录到网站。用户可以使用JavaScript SDK(如文档中所建议的)登录,然后我需要在服务器端获取用户详细信息,以便我可以为用户在数据库中存储日记条目(使用Facebook用户标识来标识用户)。我正尝试使用getJavaScriptHelper()
在PHP SDK v5中执行此操作。Facebook的PHP SDK v5访问令牌/工作流程
我对如何正确处理/存储访问令牌有些困惑。到目前为止,我有这个(我已经削减了简洁try
/catch
位):(?可能会失效的问题)
$fb = new Facebook\Facebook([
'app_id' => $APP_ID,
'app_secret' => $APP_SECRET,
'default_graph_version' => 'v2.5',
]);
$helper = $fb->getJavaScriptHelper();
$accessToken = $helper->getAccessToken();
if (isset($accessToken)) {
$oAuth2Client = $fb->getOAuth2Client();
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
$fb->setDefaultAccessToken($longLivedAccessToken);
$response = $fb->get('/me');
$userNode = $response->getGraphUser();
$name = $userNode->getName();
echo $name;
}
这似乎直到我离开这个页面一会儿做工精细,回来刷新这一页;当我这样做时,我发现一个This authorization code has expired.
异常已被抛出。
我的问题是这样的:我怎样才能避免这个问题,并确保通过getLongLivedAccessToken()
获得的访问令牌真的是最后的"about 60 days"文档引用?我需要将访问令牌存储在会话/ Cookie /数据库中吗?
我不知道我理解你的答案。你似乎做了一些有点奇怪的事情,比如检查是否存在'$ _SESSION ['fb_token']'和'$ _GET ['code']',然后从不读取它们的值。它也看起来像这个代码使用'getRedirectLoginHelper'而不是'getJavaScriptHelper'。 (并且有一个小类型 - esle)。 – Phil
对不起,不解释我的回答,我会为它添加解释 –