1

Nimble.comAPIのカスタム戦略を作成しています。彼らはOAuthを使用しているので、それは非常に簡単です。

require 'omniauth-oauth2'

module OmniAuth
  module Strategies
    class Nimble < OmniAuth::Strategies::OAuth2
      option :name, "nimble"

      option :client_options, {
        :site => "https://api.nimble.com",
        :authorize_url => '/oauth/authorize',
        :token_url => '/oauth/token'
      }

      # option :access_token_options, {
      #   :mode => :query,
      #   :param_name => :access_token
      # }      

      option :provider_ignores_state, true

      uid { raw_info['email'] }

      info do
        {
          'uid'   => raw_info['email'],
          'name'  => raw_info['name'],
          'email' => raw_info['email']
        }
      end

      extra do
        { 'raw_info' => raw_info }
      end

      def raw_info
        access_token.options[:mode] = :query
        access_token.options[:param_name] = :access_token        
        @raw_info ||= access_token.get('/api/users/myself/', {:parse => :json}).parsed
      end
    end
  end
end

トークンを渡すには、URLでaccess_tokenパラメーターを使用する必要があります。サンプルのように、raw_info関数でオプションを直接指定すると、問題ありません。

access_token_optionsハッシュでこのオプションを指定しようとすると(コメントセクションのように)—パラメーターがトークンに渡されません。私はRubyがあまり得意ではないため、ライブラリのソースからはわかりませんでした。OmniAuthOAuth2の子孫のaccess_tokenにパラメーターを正しく渡す方法です。

私はそれを「正しい方法」にしたいので、access_tokenは正しいオプションで初期化され、誰かが私に正しい方法を教えてください。

ありがとうございました!

4

1 に答える 1

0

私はいくつかの既存の戦略(GitHub、4SQ)を調査しましたが、アクセストークンオプションを直接変更するのが通常の方法のようです。

だから私はそれにとどまります:)

于 2012-10-22T18:48:24.080 に答える