Нам нужны твои мозги

Хотите расти как разработчик и найти крутую работу? Не протирайте штаны — займитесь Open Source проектами. Так легче всего попасть в лучшие команды разработчиков и положить себе в резюме настоящий проект, вместо нелепых «примеров кода». Но найти подходящий проект для участия сложно. Начинаются лень и отговорки, а за ними — отсутствие профессионального роста, критики по-настоящему крутых программистов, уныние и застой.

На Cult of Martians мы собираем интересные задачи для современных веб-программистов. Можно выбрать подходящую по сложности, продолжительности и специализации. Задачи не выдуманы «из воздуха» — каждая решает насущную проблему, и решить ее можно через создание нового Open Source проекта или улучшение существующего. Решайте задачи, прокачивайтесь, присылайте решение на оценку. Лучших могут пригласить к себе на работу компании, программистам которых понравится ваше решение.

Бэк: OmniAuth-стратегия для входа через новый eBay OAuth API

Для новичков, задача на неделю

Необходимо разработать OmniAuth-стратегию для входа в приложения на Ruby с учетной записью eBay в виде отдельного гема.

Сейчас есть гемы, которые реализуют вход через метод Auth’n’auth (например, подзаброшенный гем omniauth-ebay), а через метод OAuth — нет. (Технически оба метода работают по протоколу OAuth, что вносит путаницу).

Для работы с новыми REST API eBay пользователь должен входить именно через новый метод входа.

Польза: возможность разобраться, как же работает вход через соцсети протокол OAuth и библиотека OmniAuth.

Решение: итоговая реализация основана на решении Игната Закревского, но и Андрей Падерин и Илья Долгирев прислали рабочие решения, за что им выражается благодарность.

Что нужно реализовать:

Ruby gem с OmniAuth-стратегией и тестами на взаимодействие с eBay.

Советы по реализации

Язык реализации: Ruby.

Документация начинается здесь и продолжается здесь.

Примечание: После успешной аутентификации пользователя на стороне eBay, у нас нет никакой информации, кто же к нам пришел. Для этих целей провайдеры обычно предоставляют так называемый UserInfo endpoint, но проблема в том, что в новых eBay REST API такого нет. Поэтому для получения информации необходимо делать запрос к методу getUser старого Trading API с указанием нового токена заголовке X-EBAY-API-IAF-TOKEN (мы пишем это здесь, потому что в документации этого не найти).

Инструкции по выполнению

  1. Форкнуть проект omniauth-ebay-oauth
  2. Реализовать необходимую функциональность.
  3. Создать pull request.