проблема подключения к oauth2/api с рельсами

58
5

Я пытаюсь подключиться к mapmyfitness api через oauth2. Однако я получаю сообщение об ошибке, когда я пытаюсь подключиться.

это файл конфигурации..

OmniAuth.config.logger = Rails.logger

Rails.application.config.middleware.use OmniAuth::Builder do
provider :mapmyfitness, ENV['wn3ghaaqgbpnztsupsyfvswd3gtprvm9'], ENV['fRMsDbrNQJBgFUBkYReuqKffFKWTzZWVUKz9jCSTeVJ']
end

Использование этого должно позволить мне хотя бы войти в mapmyfitness, однако всякий раз, когда я пытаюсь подключиться (он перенаправляется на https://www.mapmyfitness.com/v7.1/oauth2/authorize/confirm)... я получаю эту ошибку в браузере "Неавторизованный клиент пытался получить доступ к вашим ресурсам".

Я не уверен, как это исправить, любая помощь приветствуется!

спросил(а) 2016-04-08T17:11:00+03:00 4 года, 6 месяцев назад
1
Решение
73

Две проблемы, которые у вас есть

Используйте только ENV [], если ваши данные хранятся в оболочке оболочки - "безопасный" способ сделать это - хранить информацию в secret.yml Ваш URL-адрес обратного вызова должен соответствовать ожидаемому Omniauth - это должно быть http://localhost.mapmyapi.com:12345/auth/mapmyfitness/callback, как описано здесь: https://github.com/intradea/omniauth#integrating- OmniAuth-в-ваше-приложение

Пример для вашего инициализатора omniauth с использованием секретов

Rails.application.config.middleware.use OmniAuth::Builder do
provider :mapmyfitness, Rails.application.secrets.mapmyfitness_provider_key, Rails.application.secrets.mapmyfitness_provider_secret
end

Тогда ваш secrets.yml будет выглядеть так:

development:
mapmyfitness_provider_key: wn3ghaaqgbpnztsupsyfvswd3gtprvm9
mapmyfitness_provider_secret: fRMsDbrNQJBgFUBkYReuqKffFKWTzZWVUKz9jCSTeVJ

Очевидно, у вас будет другая линия для производства. Помните также, что теперь, когда ваши ключи доступны для мира, вы можете рассмотреть возможность запроса нового набора учетных данных :)

Также обычно важно помнить, что вы не проверяете свой файл config/secrets.yml в контроле версий - вместо этого скопируйте его с развертыванием.

Можете попробовать использовать lvh.me вместо прокси-сервера localhost.

Измените URL-адрес обратного вызова, зарегистрированный на mapmyfitness, чтобы

http://lvh.me:3000/auth/mapmyfitness/callback

Затем в вашем браузере - посетите http://lvh.me:3000

Очевидно, вам нужно убедиться, что любой порт, использующий тот же порт, на котором работает сервер rails.

ответил(а) 2016-04-08T18:08:00+03:00 4 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема