Примечание: приведенный ниже ответ применим в основном к OAuth 1.0
Я действительно ничего не знаю о библиотеке DevDefined.Но вот нетехническое описание структуры базы данных, с которой я закончил работать в своем последнем проекте с использованием базы данных SQL.
Оно должно охватывать все необходимое для соблюдения базовой спецификации.Я пытался свести его к абсолютному минимуму.
RequestTokens
- токен (здесь я использую MD5, первичный ключ)
- consumerKey (уникальный идентификатор для потребителя)
- секрет (SHA1)
- createTime (временная метка)
- обратный вызов
AccessTokens
- токен (MD5, первичный ключ)
- секрет (SHA1)
- consumerKey
- userID (относится к владельцу ресурса)
- createTime
Потребители (зарегистрированные сторонние приложения)
- consumerKey (MD5, первичный ключ)
- consumerSecret (SHA1)
- userID (относится к разработчику, зарегистрировавшему приложение, не уникальное)
- description (текст для описания приложения)
- name (theназвание приложения)
- обратный вызов
UsedNonces
гаСовпадение одноразовых номеров было действительно самым большим вопросом дизайна для меня.OAuth говорит вам, чтобы никогда больше не разрешалось использовать один и тот же одноразовый номер с одной и той же отметкой времени.Но это сделало бы для бесконечно огромной базы данных.Я думаю, что большинство провайдеров пакетируют старые одноразовые номера по крайней мере время от времени.
Я обычно удаляю одноразовые номера старше 5 минут, исходя из того, что все запросы с отметкой времени старше 5 минут отклоняются.Я немного прощаюсь при проверке временных меток, они должны быть в формате UTC и должны быть не старше 5 минут и не опережать время моего сервера более чем на одну минуту.