0

ユーザーに代わってさまざまな API と通信できるアプリケーションを実装しています。特に、これには github が含まれます。各 API の認証を実行するために、oauth-plugin ( https://github.com/pelle/oauth-plugin ) を使用しています。残念ながら、これは Github では機能しません。

これが私の現在の GithubToken 実装です。

class GithubToken < ConsumerToken

  GITHUB_SETTINGS={
    :site=>"https://github.com",
    :request_token_path => "/login/oauth/request_token",
    :authorize_path => "/login/oauth/authorize",
    :access_token_path => "/login/oauth/access_token",
  }

  def self.consumer
    @consumer||=create_consumer
  end

  def self.create_consumer(options={})
    OAuth::Consumer.new credentials[:key],credentials[:secret],GITHUB_SETTINGS.merge(options)
  end

  def self.get_request_token(callback_url, scope=nil)
    https://github.com/login/oauth/authorize

    consumer.get_request_token({:oauth_callback=>callback_url}, :scope=>scope||credentials[:scope]||"")
  end

end

認証プロセスを開始すると、get_request_token 呼び出し中に 403 エラーが発生します。request_token_path が何らかの形で間違っていると思いますが、正しいパスに関する情報を見つけることができませんでした。検索語の一部として github を使用して google を検索することも、あまり役に立ちませんでした。omn​​iauth を試してみますが、oauth-plugin のプロバイダー機能も使用することを計画しているので、どんな助けも大歓迎です。

4

1 に答える 1

1

わかりました、解決しました。以下のように initialisers/oauth_consumers.rb を設定するとうまくいきます:

OAUTH_CREDENTIALS={
  :github=>{
     :key => "KEY",
     :secret => "SECRET",
     :expose => false, # expose client at /oauth_consumers/twitter/client see docs
     :oauth_version => 2,
     :options => {
       :site => 'https://github.com',
       :authorize_url => '/login/oauth/authorize',
       :token_url => '/login/oauth/access_token'
     }
  }
}

また、/oauth_consumers/github/callback2 をコールバック URL として登録してください。

于 2013-08-13T18:07:33.310 に答える