Я использую facebook graph api для авторизации пользователя в своем приложении, и я получаю токен короткого доступа в обратном вызове, затем я обмениваю этот токен на длинный живой токен, срок действия которого истекает через два месяца:
public function callback($response)
{
$helper = $this->facebook->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
} catch (FacebookResponseException $e) {
dd("Graph returned an error: " . $e->getMessage());
} catch (FacebookSDKException $e) {
dd("Facebook SDK returned an error: " . $e->getMessage());
}
if (!isset($accessToken)) {
if ($helper->getError()) {
return Response::HTTP_UNAUTHORIZED;
} else {
return Response::HTTP_BAD_REQUEST;
}
exit;
}
$token = $accessToken->getValue();
$this->params = array_merge($this->params, ['default_access_token' => $token]);
$longLivingToken = $this->getLongLivingToken($this->params, $token);
return $longLivingToken;
}
Мой вопрос: есть ли способ получить постоянный токен или обновить токен, не заставляя пользователя снова просматривать форму авторизации?
Пользовательский токен не действует навсегда. Существует только расширенный токен пользователя (который вы используете прямо сейчас), и он действителен в течение 60 дней. Невозможно автоматически обновить его, это должно произойти с пользовательским взаимодействием.
Единственными токенами, которые действительны навсегда, являются токены приложений и расширенные токены.