我是ruby的新手,并尝试使用Twitters API。我从twitter开发站点获取了密钥,并将其权限设置为“读取,写入和访问直接消息”。然后我尝试使用codecademy上的一些代码来检索状态代码,但得到 401错误(用X替换了键)。奇怪的是,codecademy中的这段代码检索了200个状态代码,所以我的想法就是我的计算机中的东西:
require 'rubygems'
require 'oauth'
consumer_key = OAuth::Consumer.new(
"X",
"X")
access_token = OAuth::Token.new(
"X",
"X")
# All requests will be sent to this server.
baseurl = "https://api.twitter.com"
# The verify credentials endpoint returns a 200 status if
# the request is signed correctly.
address = URI("#{baseurl}/1.1/account/verify_credentials.json")
# Set up Net::HTTP to use SSL, which is required by Twitter.
http = Net::HTTP.new address.host, address.port
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
我也尝试过使用twitters gem(当然要添加所需的键),这次我得到以下错误时间戳出界(Twitter ::错误::未经授权)
require 'rubygems'
require 'twitter'
Twitter.configure do |config|
config.consumer_key = YOUR_CONSUMER_KEY
config.consumer_secret = YOUR_CONSUMER_SECRET
config.oauth_token = YOUR_OAUTH_TOKEN
config.oauth_token_secret = YOUR_OAUTH_TOKEN_SECRET
end
Twitter.update("I'm tweeting with @gem!")
我正在运行ruby 1.9.3p429。
任何帮助都不仅仅是值得赞赏的。
答案 0 :(得分:0)
我一直有同样的问题,看看oauth docs,我发现了以下内容:
Make a regular GET request using AccessToken:
@response = @token.get('/people')
@response = @token.get('/people', { 'Accept'=>'application/xml' })
如果您感到好奇,可以在此处找到更多详细信息:http://oauth.rubyforge.org/rdoc/classes/OAuth/AccessToken.html
无论如何这是我的代码:
def prepare_access_token()
@opts = {
'oauth_token' => 'TOKEN',
'oauth_token_secret' => 'TOKEN_SECRET',
'api_key' => 'API_KEY',
'api_secret' => 'API_SECRET'
}
consumer = OAuth::Consumer.new("#{@opts['api_key']}", "#{@opts['api_secret']}",
{ :site => "http://api.twitter.com",
:scheme => :header
})
# now create the access token object from passed values
token_hash = { :oauth_token => "#{@opts['oauth_token']}",
:oauth_token_secret => "#{@opts['oauth_token_secret']}"
}
access_token = OAuth::AccessToken.from_hash(consumer, token_hash )
return access_token
end
#here is your url
call_url = "https://api.twitter.com/1.1/statuses/home_timeline.json"
uri = URI.encode(call_url)
# Exchange our oauth_token and oauth_token secret for the AccessToken instance.
access_token = prepare_access_token()
# use the access token as an agent to get the home timeline
response = access_token.get(uri)
这对我有用。如果您有任何反馈意见,请随时分享:)
答案 1 :(得分:0)
我昨天遇到了同样的问题,因为几天前。发生的事情是我在海外生活了一段时间,我将我的区域设置为区域X,但手动将我的时钟更改为当前的时钟。一旦我设置了当前区域并与互联网时区同步,错误就消失了。
答案 2 :(得分:0)
我有同样的问题(401)我通过在twitter中进入应用程序并重新生成消费者密钥和消费者密钥来解决它,这很容易,因为有一个按钮来执行它,使用新值停止我的401错误。希望这有助于某人。