2015-10-18 2 views
0

Я разрабатываю приложение 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.

+0

Я подозреваю, что CarrierWave использует OAuth 1, но вы используете OAuth 2. OAuth 1 использует токен OAuth и токен OAuth, в то время как OAuth 2 использует один токен доступа. – smarx

+0

Вы правы. После публикации я начал изучать вилки «carrierwave-dropbox» и нашел один с «грубой реализацией oauth2», который не включает секрет маркера доступа для авторизации. Новая проблема с моим пользователем, не прошедшим проверку подлинности, появилась сейчас, но как только я уберу это, я, скорее всего, отправлю свой собственный ответ. Спасибо @smarx. – David

ответ

0

В вашем Gemfile изменения

gem 'carrierwave-dropbox' 

в

gem 'carrierwave-dropbox', :git => 'https://github.com/robin850/carrierwave-dropbox.git', :tag => 'v2.0.0.rc1' 

затем bundle install.

Смежные вопросы