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

Я пытаюсь подключиться к api mapmyfitness через 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)... я получаю эту ошибку в браузере "Неавторизованный клиент попытался получить доступ к вашим ресурсам".

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

1 ответ

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

  1. Используйте ENV[] только в том случае, если ваши данные хранятся в среде оболочки - "более безопасный" способ сделать это - сохранить информацию в secret.yml
  2. Ваш URL обратного вызова должен соответствовать ожидаемому Omniauth - он должен быть http://localhost.mapmyapi.com:12345/auth/mapmyfitness/callback как описано здесь: https://github.com/intridea/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

Тогда ваш секретный файл будет выглядеть так:

development:
  mapmyfitness_provider_key: wn3ghaaqgbpnztsupsyfvswd3gtprvm9
  mapmyfitness_provider_secret: fRMsDbrNQJBgFUBkYReuqKffFKWTzZWVUKz9jCSTeVJ

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

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

Можно попробовать использовать lvh.me вместо локального хоста mapmyfitness.

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

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

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

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

Другие вопросы по тегам