【问题标题】:Specify token options for OmniAuth OAuth2 based strategy为基于 OmniAuth OAuth2 的策略指定令牌选项
【发布时间】:2012-10-23 02:48:24
【问题描述】:

我正在为 Nimble.com API 创建自定义策略。由于他们使用的是 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 方面不是很好,所以我没有从库源中弄清楚——如何正确地将参数传递给 OmniAuth OAuth2 后代中的 access_token。

我想让它“正确的方式”,所以使用正确的选项初始化 access_token,请有人指出正确的方式。

谢谢!

【问题讨论】:

    标签: ruby oauth omniauth


    【解决方案1】:

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

    所以我会坚持下去:)

    【讨论】:

      猜你喜欢
      • 2018-06-01
      • 2012-02-01
      • 1970-01-01
      • 2011-09-20
      • 2020-08-20
      • 2020-03-03
      • 2012-06-23
      • 2015-07-22
      • 2018-02-03
      相关资源
      最近更新 更多