如何使用访问令牌在Github上使用GET和POST?

时间:2012-05-28 12:46:32

标签: ruby-on-rails ruby github-api

我正在使用OmniAuth通过Github对用户进行身份验证。 OmniAuth提供访问令牌。现在我想向Github发送GET或POST请求。我不想使用任何宝石,我想用Net :: HTTP。我是这样做的:

<%consumer = OAuth::Consumer.new("mshsD0jpgcYwwOEcTW5ZTA",  "V6KTqllY5jS392pj4FNFCb5EiOM8DaFzVwr9cS54XQ", { :site => "https://api.github.com", :request_token_path => '/oauth/request_token', :access_token_path => '/oauth/access_token', :authorize_path => '/oauth/authorize', :scheme => :header })%>

<%access_token = OAuth::AccessToken.new(consumer,auth.token,auth.secret)%>

我之前为Twitter工作的工作正常,但现在我收到以下错误:

uninitialized constant ActionView::CompiledTemplates::OAuth

即使在同一个应用程序中,同样的事情也适用于Twitter,但不适用于Github。

我在谷歌搜索过但发现没有任何帮助。

2 个答案:

答案 0 :(得分:3)

您应该使用OAuth2而不是OAuth。我实际上建议使用Octokit,它很容易使用,Wynn现在可以为GitHub工作,所以他的部分工作就是让它保持最新状态。 :)

如果你想使用Net :: HTTP(虽然我无法想象为什么),你可以在没有任何宝石的情况下实现这一点。只需将OmniAuth中的令牌放入请求的“身份验证”标题中即可。

require 'net/https'
require 'uri'

uri = uri = URI.parse("https://api.github.com/users/username")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

headers = { "Authentication" => "token" }
request = Net::HTTP::Get.new(uri.request_uri, headers)
response = http.request(request)
response.body # => A string containing the JSON response

答案 1 :(得分:0)

看到你已经在使用Omniauth并熟悉它,我建议使用omniauth-github策略:https://github.com/intridea/omniauth-github