【问题标题】:Unable to upload to Dropbox with carrierwave-dropbox without access token secret在没有访问令牌密码的情况下,无法使用carrierwave-dropbox 上传到 Dropbox
【发布时间】:2015-10-18 04:17:41
【问题描述】:

我正在开发一个包含多个组织的 Rails (4) 应用程序,每个组织都有一个面向公众的表单,访问者可以通过该表单上传文件。我面临的挑战是让它足够灵活以支持多个存储提供商。我的目标是让组织能够从多个提供商中进行选择,首先是 Dropbox,作为这些上传的目的地。

我正在使用 Devise 进行身份验证,因此我还利用它和 omniauth_dropbox_oauth2 在用户连接 Dropbox 后获取他们的凭据。

我正在使用 Carrierwave 来管理我的文件上传,但在没有提供组织(Dropbox 用户)访问令牌密码的情况下上传文件时遇到了困难,当我通过 oauth2 授权连接时,我没有得到。

我什至还没到让我的 Carrierwave Uploader 为每个用户动态初始化配置的地步,所以在这一点上,我真的只是想了解我在哪里出错,只用我的 APP_KEY 和 APP_SECRET 配置它,以及我的 ACCESS_TOKEN,这似乎在他们的支持下是有效的。

不确定是否值得在此处共享代码,但尽管如此,这就是我所在的位置。

宝石文件

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(载波)

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 使用单个访问令牌。
  • 你是对的。发布后,我开始探索carrierwave-dropbox 的分支,发现一个具有“粗略的 oauth2 实现”的分支,其中不包含用于授权的访问令牌密码。现在出现了我的用户未通过身份验证的新问题,但是一旦我解决了这个问题,我可能会发布我自己的答案。谢谢@smarx。

标签: ruby-on-rails devise dropbox carrierwave dropbox-api


【解决方案1】:

在您的Gemfile 更改

gem 'carrierwave-dropbox'

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

然后bundle install

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-05
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    相关资源
    最近更新 更多