开发者

uninitialized constant Twitter::OAuth

I'm struggling to get my app to display a timeline of feeds from my app. So far I've used the oauth-plugin, oauth and twitter gems (for rails3) to get it authorised. This has worked just fine.

Now I'm struggling when I try and connect.

I end up with an error:

uninitialized constant Twitter::OAuth

Have checked I don't have another action calling twitter (as in another post here). But so far, no luck.

Hope someone can help!

  • Edit -

I forgot to mention I'm using Devise to authenticate my users. Have tried inserting:

require 'twitter'

But still no success..

-- EDIT TWO --

Found a solution on the twitter gem git site about depreciating this in version 1.0.

I've now replaced the code in my twitter_token.rb file with:

def client unless @client

  @twitter_oauth=Twitter::Client.new(:TwitterToken.consumer.key,:TwitterToken.consumer.secret)
  @twitter_oauth.authorize_from_access(token,secret)
  @client=Twitter::Base.new(@twitter_oauth)
end

Which gets rid of that error but now leads to another :(

undefined method `consumer' for :TwitterToken:Symbol

I have al开发者_如何转开发so tried this:

 def client
    unless @client
      @twitter_oauth=Twitter::Client.new(:oauth_token =>'TwitterToken.consumer.key', :oauth_token_secret=>'TwitterToken.consumer.secret')
      @twitter_oauth.authorize_from_access token,secret
      @client=Twitter::Base.new(@twitter_oauth)
    end

Which gives the following error:

undefined method `authorize_from_access' for #<Twitter::Client:0x00000102da1530>

Any ideas? I'm going insane!


I'm going to answer my own question here - if it helps one person, it's worth it considering I lost three days to it.

Using the latest twitter gem, devise and oauth-plugin. I was seeing a lot of errors. The latest twitter_token controller on the oauth-plugin site does not work, even though it's been updated for a recent twitter gem..

In the end, I deleted my entire twitter_token.rb file and started again:

require 'twitter'
class TwitterToken < ConsumerToken
  TWITTER_SETTINGS={:site=>"http://api.twitter.com", :request_endpoint => 'http://api.twitter.com',}
  def self.consumer
    @consumer||=OAuth::Consumer.new credentials[:key],credentials[:secret],TWITTER_SETTINGS
  end

  def client
    Twitter.configure do |config|
      config.consumer_key = TwitterToken.consumer.key
      config.consumer_secret = TwitterToken.consumer.secret
      config.oauth_token = token
      config.oauth_token_secret = secret
    end
    @client ||= Twitter::Client.new
  end
end

You can then update twitter using something like this:

<%= current_user.twitter_token.client.update("At last it's working!") %>

Also, make sure you're using the rails3 branch of the oauth-plugin..

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜