У меня есть API JSON REST. Существует рукопожатие, которое даст вам токен, который действителен в течение 15 минут. Все вызовы, которые вы выполняете в течение этих 15 минут, должны работать нормально. Через 15 минут я возвращаю объект ошибки (включая код, сообщение, success = false), но мне также интересно, какой код ошибки HTTP я должен вернуть? И будет ли использование кода ошибки HTTP испортить определенные клиенты? (HTML5, iPhone, Android). Что считается наилучшей практикой в этом сценарии?Token Expired - API JSON REST - Код ошибки
ответ
Я искал спецификацию OAuth 2, и все, что я мог найти, это то, что они возвращают «Недопустимую ошибку токена», когда она истекает. Нет никакого упоминания, что я могу найти, какого HTTP-кода они используют. Однако я бы сказал, что ваша самая безопасная ставка - просто использовать 400.
Вы должны вернуть код состояния 401 Unauthorized
. Вы можете дополнительно предоставить гипермедиа, чтобы снова установить токен
Подумайте, что происходит в веб-приложении. Вы отправляетесь на банковский сайт. Если не auth'd, он отправит вас на страницу входа в систему. Затем вы входите в систему, и вам хорошо пойти на какое-то время. Затем он истекает, и цикл повторяется.
Просто мысль.
FWIW Facebook использует 400 с пользовательским ответом JSON. Я лично предпочел бы 401 с пользовательским ответом JSON.
Вот тело ответа ФБ:
{
"error": {
"message": "Error validating access token: Session has expired on Jul 17, 2014 9:00am. The current time is Jul 17, 2014 9:07am.",
"type": "OAuthException",
"code": 190,
"error_subcode": 463
}
}
Что-то подсказывает, что Facebook следует рассматривать как исключение, а не руководство для разработки. Просто говорю. –
Это вызов Facebook в отношении сервера авторизации или поставщика ресурсов? Сервер авторизации должен вернуть 400: https://tools.ietf.org/html/rfc6749#section-5.2, но поставщик ресурсов должен вернуть 401 –
согласно спецификации rfc6750 - "The OAuth 2.0 Авторизация Структура: Носитель маркеров Использование", https://tools.ietf.org/html/rfc6750, стр.8, раздел 3.1, сервер ресурс должен вернуть 401: >
invalid_token маркер доступа при условии, истек, отозваны, уродливы или недействительным по другим причинам. Ресурс СЛЕДУЕТ ответить кодом статуса HTTP 401 (Несанкционированный). Клиент МОЖЕТ запросить новый токен доступа и повторить запрос защищенного ресурса .
- 1. Pinterest API Access token expired
- 2. Весенняя сессия expired token
- 3. google authentication expired token
- 4. Azure ServiceBus Token Expired
- 5. OmniAuth Facebook expired token error
- 6. OWIN Oauth differentiate expired и invalid token
- 7. Linkedin API: Exchange JSAPI Token для REST API OAuth Token
- 8. REST API - POST Ошибка Token
- 9. Защита REST api с Token
- 10. Auth token в REST API
- 11. Код ошибки и сообщения об ошибке REST API JSON
- 12. REST API код ошибки возвращает структуру
- 13. JWT Token Expired проблема при использовании API клиента Twilio JS
- 14. Код ошибки API REST 500 Обработка
- 15. Magento REST API Пример ошибки
- 16. spring social facebook renew expired token
- 17. AFNetworking и auth token Код ошибки -1011
- 18. Azure Management Rest API Auth token
- 19. Rest API - объект JSON
- 20. REST Call with Autentication token
- 21. Rest API Код состояния
- 22. дооснащения код ошибки JSON
- 23. Extract ответ JSON с REST API
- 24. codeigniter: Rest api + Json
- 25. Создание API REST/JSON
- 26. REST API JSON-передача
- 27. REST/JSON API [Помощь]
- 28. Дизайн REST JSON API
- 29. Правильно реализовать AccountManager, oauth-2 и expired token
- 30. OneDrive REST API JSON response
+1, отличный вопрос. Вы когда-нибудь находили хорошее решение? (btw - оба [netflix] (http://developer.netflix.com/docs/read/HTTP_Status_Codes) и [linkedin] (https://developer.linkedin.com/documents/handling-errors-invalid-tokens) возвращает пункт 401). –
Возможный дубликат [Какой код состояния следует использовать, если токен сеанса является недопустимым?] (Https://stackoverflow.com/questions/20613088/what-status-code-should-i-use-when-session-token-is -invalid) –