2012-10-19 39 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使用正确的选项进行了初始化,请别人指点正确的方式。

谢谢!

回答

0

我已经探索了几种现有的策略(GitHub,4SQ),并且看起来像直接修改访问令牌选项的正常做法。

所以我会留下来的:)

相关问题