Проблема с подключением к 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 ответ
Две проблемы у вас есть
- Используйте ENV[] только в том случае, если ваши данные хранятся в среде оболочки - "более безопасный" способ сделать это - сохранить информацию в secret.yml
- Ваш 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.