Я разрабатываю приложение Rails (4) с несколькими организациями, и каждая организация имеет открытую форму, через которую посетители могут загружать файлы. Задача для меня сделала ее достаточно гибкой для поддержки нескольких поставщиков хранилищ. Моя цель состоит в том, чтобы организации могли выбирать из нескольких поставщиков, первым из которых был Dropbox, в качестве места назначения для этих загрузок.Невозможно загрузить Dropbox с помощью несущей-dropbox без доступа к токен-секрету
Я использую Devise для аутентификации, поэтому я также использую его и omniauth_dropbox_oauth2
для захвата учетных данных пользователя после подключения их Dropbox.
Я использую Carrierwave для управления загрузкой файлов, но пытаюсь загрузить файл, не предоставив пользователю доступ к токену в организации (пользователь Dropbox), чего я не получаю, когда я разрешаю подключение через oauth2.
Я даже не хочу, чтобы мой загрузчик Carrierwave Uploader инициализировал конфигурацию динамически для каждого пользователя, поэтому на этом этапе я просто пытаюсь понять, где я ошибаюсь, настраивая его только с помощью моего APP_KEY, APP_SECRET и мой ACCESS_TOKEN, который, кажется, действителен для их поддержки.
Не уверен, что здесь стоит обменяться кодами, но, тем не менее, здесь я нахожусь.
Gemfile
carrierwave (0.10.0)
carrierwave-aws (0.7.1)
carrierwave (~> 0.7)
carrierwave-dropbox (1.0.2)
carrierwave (~> 0.9)
dropbox-sdk (~> 1.6)
application_uploader.rb (Carrierwave)
class ApplicationUploader < CarrierWave::Uploader::Base
def initialize(*)
super
CarrierWave.configure do |config|
config.dropbox_app_key = ENV['DROPBOX_KEY']
config.dropbox_app_secret = ENV['DROPBOX_SECRET']
config.dropbox_access_token = ENV['MY_ACCESS_TOKEN']
# config.dropbox_access_token_secret = ENV['MY_ACCESS_TOKEN_SECRET']
# config.dropbox_user_id = <organization.id>
config.dropbox_access_type = "app_folder"
end
end
end
мне интересно, если кто-то может пролить некоторый как почему закачка неудачу без _access_token_secret
.
Я подозреваю, что CarrierWave использует OAuth 1, но вы используете OAuth 2. OAuth 1 использует токен OAuth и токен OAuth, в то время как OAuth 2 использует один токен доступа. – smarx
Вы правы. После публикации я начал изучать вилки «carrierwave-dropbox» и нашел один с «грубой реализацией oauth2», который не включает секрет маркера доступа для авторизации. Новая проблема с моим пользователем, не прошедшим проверку подлинности, появилась сейчас, но как только я уберу это, я, скорее всего, отправлю свой собственный ответ. Спасибо @smarx. – David