1

OmniAuthを使用してGithub経由でユーザーを認証しています。OmniAuthはアクセストークンを提供します。次に、GETまたはPOSTリクエストをGithubに送信します。宝石は使いたくありません。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を検索しましたが、役に立ったものは何も見つかりませんでした。

4

2 に答える 2

2

OAuth の代わりに OAuth2 を使用する必要があります。私は実際にOctokitを使用することをお勧めします。これは使いやすく、Wynn は現在 GitHub で機能しているため、最新の状態に保つことが彼の仕事の一部です。:)

Net::HTTP を使用したい場合 (理由はわかりませんが)、実際には gem なしでそれを行うことができます。OmniAuth から取得したトークンをリクエストの「Authentication」ヘッダーに入れるだけです。

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
于 2012-06-05T02:29:07.780 に答える
0

すでにOmniauthを使用していて、それに精通しているので、omniauth-github戦略を使用することをお勧めします:https ://github.com/intridea/omniauth-github

于 2012-06-05T04:32:41.690 に答える