使用Rails将状态上传到Twitter的图像

时间:2012-07-09 06:50:54

标签: ruby-on-rails twitter

我正在使用一个名为prepare_access_token的函数来联系Twitter api来执行读写功能。

以下是我用来更新Twitter消息的代码


@tweet = "Rails Rails"
@access_token = prepare_access_token(@oauth_token, @oauth_secret)
@response = @access_token.request(:post, "http://api.twitter.com/1/statuses/update.json", :status => @tweet)

def prepare_access_token(oauth_token, oauth_token_secret)

  consumer_key = Rails.application.config.consumer_key
  consumer_secret = Rails.application.config.consumer_secret  

  consumer = OAuth::Consumer.new(consumer_key, consumer_secret,
    { :site => "http://api.twitter.com",
      :scheme => :header
    })
  # now create the access token object from passed values
  token_hash = { :oauth_token => oauth_token,
                 :oauth_token_secret => oauth_token_secret
               }
  access_token = OAuth::AccessToken.from_hash(consumer, token_hash )
  return access_token
end

这适用于没有附加图像的状态更新,但是当我尝试使用下面的图像附件更新状态时

@access_token = prepare_access_token(@oauth_token, @oauth_secret)
@response = @access_token.request(:post,  "https://upload.twitter.com/1/statuses/update_with_media.json"  , :media => $image , :status  => "Status")

它显示为{"request":"/1/statuses/update_with_media.json","error":"Error creating status."}

我在做错了什么?请建议。

2 个答案:

答案 0 :(得分:2)

对于消费者:网站,请尝试将其设置为http://upload.twitter.com而不是http://api.twitter.com。 api网站不支持媒体上传。

答案 1 :(得分:0)

与Twitter API的其他REST方法不同,您必须为此Content-Type方法将multipart/form-data设置为POST https://upload.twitter.com/1/statuses/update_with_media.json