Есть тренировочные серверы, которые вы можете использовать!
Сложность: Начинающий | Легко | Нормальный | Испытывающий
Есть много возможностей использовать токены, но многие серверы требуют настройки и многого другого.
Предпосылки:
- Уметь создать Hello, World! Приложение для iOS (руководство ЗДЕСЬ)
- Если вы будете строить собственный проект, вам нужно будет иметь дело с безопасностью транспорта приложений (руководство ЗДЕСЬ)
- Замыкания используются для возврата значений нескольких URLSession одно за другим. Использование задачи данных имеет руководство (ЗДЕСЬ), а закрытие описано в руководстве (ЗДЕСЬ).
Терминология
Конечная точка: конечная точка - это удаленное вычислительное устройство, которое обменивается данными с сетью, к которой оно подключено.
OAuth: открытый стандарт для делегирования доступа, обычно используемый как способ для пользователей Интернета предоставлять веб-сайтам или приложениям доступ к своей информации на других веб-сайтах, но без предоставления им паролей.
Запрос GET: запрашивает данные из указанной конечной точки.
Запрос POST: отправляет данные в указанную конечную точку для создания или обновления ресурса.
Почтальон: инструмент для тестирования и использования RESTful API.
Токен: это авторизация определенного приложения для доступа к определенным данным.
typealias: такой тип представляет именованный псевдоним существующего типа
url: унифицированный указатель ресурсов. Адрес веб-страницы или ресурса
Ограничения для этой статьи
Это не полностью протестированный (или действительно тестируемый) модуль. Эта конкретная статья посвящена токену OAuth и тому, как он может храниться в проекте Swift.
Если вам нужен полностью протестированный класс HTTPManager, прочтите эту статью.
Сделать простой запрос
Тестовый сервер OAuth
Тестовый сервер OAuth находится в url
(http://term.ie/oauth/example/index.php) и позволяет нам запрашивать token
и потенциально сохранять его в приложении.
Преимущество использования term.ie в том, что существуют статические токены и ключи, поэтому каждый раз мы получаем одни и те же результаты. Это упрощает использование и тестирование (как мы и ожидали!)
Использование почтальона для запроса токена
В интерфейсе Postman
(Postman
можно загрузить с www.postman.com) мы собираемся создать GET request
из endpoint
http://term.ie/oauth/example/request_token.php
Требования этого конкретного запроса - предоставить ключ потребителя и секрет потребителя.
Эти две части данных
Consumer Key: ключ
Секрет потребителя: секрет
Мы видим, где эти данные находятся в Postman
То есть успешный запрос вернул oauth_token=requestkey&oauth_token_secret=requestsecret
, который является токеном и секретом.
Мы можем продолжить работу с этими oauth_token и oauth_token_secret и аналогичным образом можем сделать запрос в Postman
на следующий url
http://term.ie/oauth/example/ access_token.php
То есть успешный запрос вернул oauth_token = accesskey & oauth_token_secret = accesssecret.
То есть мы можем использовать API endpoint
для выполнения аутентифицированных вызовов url
http://term.ie/oauth/example/echo_api.php
Возвращенная строка testkey = testval & testkeytwo = testvaltwo - это параметры, отличные от OAuth
, которые были определены в Postman
на следующем экране.
Таким образом, используя Postman
, мы можем выполнять аутентифицированные вызовы API!
Выполнение простого запроса с использованием Swift
Реализация протокола OAuth в Swift
Вместо разработки протокола OAuth
я использовал OhhAuth, который доступен по адресу https://github.com/mw99/OhhAuth (и может использоваться простым перетаскиванием одного файла в ваш проект).
Файл конфигурации для трех URL-адресов
Следующие конечные точки могут быть закодированы в файле constants.swift.
let requestTokenEndpoint = “http://term.ie/oauth/example/request_token.php" let accessTokenEndpoint = “http://term.ie/oauth/example/access_token.php" let apiEndpoint = “http://term.ie/oauth/example/echo_api.php"
Настройка свойств ключа и секрета
Здесь мы используем typealias
, чтобы помешать типу ключей и секретов; но с помощью typealias
, чтобы дать разработчикам некоторое представление о типе String, который используется для OAuth
вызовов, а не просто раскрывать их как строки.
let consumerKey = "key" let consumerSecret = "secret" var oAuthRequestKey: OAuthRequestKey? var oAuthRequestSecret: OAuthRequestSecret? typealias OAuthRequestKey = String typealias OAuthRequestSecret = String var oAuthAccessKey: OAuthAccessKey? var oAuthAccessSecret: OAuthAccessSecret? typealias OAuthAccessKey = String typealias OAuthAccessSecret = String
Код: использование Swift для запроса токена
Это аналогично делается с использованием приложения с одним представлением в Swift. Я бы не делал это в производственной среде, но дает некоторое представление о том, что токен авторизации можно запросить с помощью OAuth
.
Объяснение: использование Swift для запроса токена доступа
Используя приведенный выше код, мы имеем тот же танец вокруг ключа потребителя и секрета, используемых для получения доступа к ключу запроса и секрета запроса, чтобы в конечном итоге распечатать возвращаемое значение из endpoint
.
Приведенный выше код разработан, чтобы дать представление о том, как OAuth
может быть реализован в Swift.
Полное репо с проектом
У него действительно нет интерфейса ... но вот, пожалуйста!
Расширьте свои знания
- Документация для Postman находится на www.postman.com.
- Документация для OhhAuth находится по адресу https://github.com/mw99/OhhAuth.
- Документация для протокола OAuth 1.0 доступна по адресу https://tools.ietf.org/html/rfc5849#section-3.
Контактное лицо в Twitter:
Любые вопросы? Вы можете связаться со мной здесь