ruby-on-rails - Twitter Rails gem Update_with_media 返回未经授权

标签 ruby-on-rails ruby twitter ruby-on-rails-4 twitter-gem

我正在使用 Twitter gem 进行身份验证并将内容分享到 Twitter。 我还需要包含图像,因此我使用“update_with_media”方法,如下所示:

def tweet
    client = Twitter::REST::Client.new do |config|
      config.consumer_key        = "my consumer key"
      config.consumer_secret     = "my consumer secret"
      config.access_token        = "my access token"
      config.access_token_secret = "my secret access token"
    end
    url = @flip.image_urls[:normal].to_s
    r = open(url)
    bytes = r.read
    img = Magick::Image.from_blob(bytes).first
    fmt = img.format
    data = StringIO.new(bytes)
    data.class.class_eval { attr_accessor :original_filename, :content_type }
    data.original_filename = @flip.slug + "." + fmt unless @flip.slug.nil?
    data.content_type='image.jpg'

    client.update_with_media(personal_message, data)
  end

我得到了这样的回复:

Twitter::Error::Unauthorized (Could not authenticate you):

对于与 Twitter 的所有其他交互、获取关注者或推文(无媒体更新),它可以使用同一帐户正常工作,因此我的凭据是正确的。

有什么想法吗?这是 Twitter API 或 Twitter Gem 上的错误吗? ?

感谢您的帮助,谢谢。

最佳答案

我发现了问题所在。 Twitter返回的错误非常具有误导性且不准确。

我的代码的问题是您不能使用 StringIO 文件的 update_with_media 方法,它必须是 File 对象(File 类)。

这就是解决方案:

client.update_with_media(message_link, open(url))

其中 url 是您需要的图像 URL。就我而言,是存储在 AWS 上的 Flip 模型的图像 URL。

关于ruby-on-rails - Twitter Rails gem Update_with_media 返回未经授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24330953/

相关文章:

ruby-on-rails - 创建 ActiveRecord 对象时如何设置属性?

ruby - Jekyll 未生成 _sites 文件夹

android - 织物 Android : login with Twitter and Callback URL

ios - Twitter.sharedInstance() 不存在 swift TwitterKit

ruby-on-rails - Rails 中的 ffmpeg 缩略图错误

ruby-on-rails - 使用 Rails 和 Paperclip 导入旧数据

ruby-on-rails - Rails 控制台复杂查询

ruby-on-rails - ruby 如何读取哈希

ruby-on-rails - 更新操作中的 Rails HABTM ActiveRecord::RecordNotFound

android - Webview 在某些机器人上不显示 Twitter