Я получаю доступ к API, в котором вы сначала авторизуетесь, и вы получаете обратную маркер доступа, которую вы используете при последовательных вызовах. Через некоторое время (через несколько часов) истекает срок доступа к токену доступа. Поэтому я кэширую токен на сервере, чтобы любые пользователи, использующие веб-приложение, запускали вызовы API с использованием этого токена.Как обрабатывать вызовы API при завершении сеанса?
Но когда он истекает, я делаю рекурсивный вызов после обновления токена доступа. Так, например (в псевдо-JS):
function getDetails (id) {
data = HTTP.get(url, {params: ...});
if (!data.success) {
updateToken(function() {
return getDetails(id);
});
} else { /*.. we're good*/ }
}
Там будет также проверить глубину рекурсии там тоже. Если есть лучший способ сделать это, я бы хотел это услышать. В основном:
- вызовов API
- (отказ)
- Обновление маркера
- вызовов API снова
Что произойдет, если у них нет разрешения на использование API? Будет ли ваша функция вызывать переполнение стека? (Возможно, вам нужно только выполнить рекурсию один раз.) – royhowie
Я вижу, что вы там делали! ;) Для аргумента предположим, что у них есть разрешение. Исходный токен доступа действителен, поскольку сервер Node.js авторизирован с секретным ключом/паролем. И да, моя проверка рекурсии позволяет только один уровень рекурсии. – CaptSaltyJack
Мне тоже пришлось использовать api, api reddit. В основном после сообщения от api, если есть ошибка, вы проверяете, что такое ошибка, и если вы не аутентифицированы, как это произойдет, в конце концов вы попросите новый токен и обновите существующий токен к этому новому токену, а затем продолжите с того места, где вы остановились , Таким образом, у вас есть правильная идея, я не думаю, что есть другой способ, который создаются таким образом. –