Есть тренировочные серверы, которые вы можете использовать!

Сложность: Начинающий | Легко | Нормальный | Испытывающий

Есть много возможностей использовать токены, но многие серверы требуют настройки и многого другого.

Предпосылки:

  • Уметь создать 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.

Полное репо с проектом

У него действительно нет интерфейса ... но вот, пожалуйста!



Расширьте свои знания

Контактное лицо в Twitter:

Любые вопросы? Вы можете связаться со мной здесь