2012-10-19 3 views
1

Nimble.com API에 대한 사용자 지정 전략을 만들고 있습니다. OAuth를 사용하는 것처럼 꽤 간단합니다.OmniAuth OAuth2 기반 전략에 대한 토큰 옵션 지정

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에서별로 좋지 않아서 라이브러리 소스에서 OmniAuth OAuth2 하위 클래스의 access_token에 매개 변수를 올바르게 전달하는 방법을 알지 못했습니다.

"올바른 방법"으로 만들고 싶습니다. 따라서 올바른 옵션으로 초기화 된 access_token은 plese 누군가 올바른 방법을 알려줍니다.

감사합니다.

답변

0

몇 가지 기존 전략 (GitHub, 4SQ)을 살펴 보았으며 액세스 토큰 옵션을 직접 수정하는 것이 일반적인 방법입니다.

그럼 내가 함께있을거야.

관련 문제