【问题标题】:How do I use GET and POST on Github using access tokens?如何使用访问令牌在 Github 上使用 GET 和 POST?
【发布时间】:2012-06-02 20:04:39
【问题描述】:

我正在使用 OmniAuth 通过 Github 对用户进行身份验证。 OmniAuth 提供访问令牌。现在我想将 GET 或 POST 请求发送到 Github。我不想使用任何 gem,我想使用 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。

我通过 Google 进行了搜索,但没有找到任何帮助。

【问题讨论】:

  • 你可以尝试使用顶级命名空间吗?将:: 前置到OAuth,所以写::OAuth::Consumer.new 而不是OAuth::Consumer.new
  • @shime 我试过但最终得到“未初始化的常量 OAuth”这个错误

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


【解决方案1】:

鉴于您已经在使用 Omniauth 并且熟悉它,我建议您使用 omniauth-github 策略:https://github.com/intridea/omniauth-github

【讨论】:

    【解决方案2】:

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

    如果你想使用 Net::HTTP(虽然我无法想象为什么),你实际上可以在没有任何 gem 的情况下做到这一点。只需将您从 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
    

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 2014-07-02
      • 2021-09-30
      • 2021-10-20
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 2022-12-16
      相关资源
      最近更新 更多