【问题标题】:quickbooks integration in rails application (parameter rejected OAuth)rails 应用程序中的 quickbooks 集成(参数拒绝 OAuth)
【发布时间】:2018-01-17 06:53:25
【问题描述】:

我正在创建一个 Rails 应用程序来将发票发布到 quickbooks 我每次尝试使用 quickbooks 进行身份验证时都使用这个 gem quickbooks-ruby 它给出了这个错误OAuth::Problem parameter_rejected 下面是我的代码。

quickbook.rb(初始化程序)

    ::QB_OAUTH_CONSUMER = OAuth::Consumer.new(OAUTH_CONSUMER_KEY, OAUTH_CONSUMER_SECRET, {
    :site                 => "https://oauth.intuit.com",
    :request_token_path   => "/oauth/v1/get_request_token",
    :authorize_url        => "https://appcenter.intuit.com/Connect/Begin",
    :access_token_path    => "/oauth/v1/get_access_token"
})

控制器中的验证方法

 def authenticate_quickbooks    
    callback = api_webhooks_quickbook_oauth_callback_path
    token = QB_OAUTH_CONSUMER.get_request_token(:oauth_callback => callback)
    session[:qb_request_token] = token
    redirect_to("https://appcenter.intuit.com/Connect/Begin?oauth_token=#{token.token}") and return

  end

回调

def quickbooks_oauth_callback
    at = session[:qb_request_token].get_access_token(:oauth_verifier => params[:oauth_verifier])
    token = at.token
    secret = at.secret
    realm_id = params['realmId']
  end

【问题讨论】:

标签: ruby-on-rails quickbooks


【解决方案1】:

问题解决了。我的 quickbooks 应用程序使用的是 oAuth2,并且 gem 对 oAuth1 和 oAuth2 有不同的身份验证方法。 下面是代码(用于 OAuth2)

quickbook.rb(初始化程序)

oauth_params = {
  :site => "https://appcenter.intuit.com/connect/oauth2",
  :authorize_url => "https://appcenter.intuit.com/connect/oauth2",
  :token_url => "https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer"
}

::QB_OAUTH2_CONSUMER = OAuth2::Client.new(OAUTH_CONSUMER_KEY, OAUTH_CONSUMER_SECRET, oauth_params)
Quickbooks.sandbox_mode = true

控制器中的验证方法

redirect_uri = "http://localhost:3000#{quickbooks_authenticate_callback_path}"
      grant_url = ::QB_OAUTH2_CONSUMER.auth_code.authorize_url(:redirect_uri => redirect_uri, :response_type => "code", :state => SecureRandom.hex(12), :scope => "com.intuit.quickbooks.accounting")
      redirect_to grant_url

回调

 redirect_uri = oauth_callback_quickbooks_url
      if resp = ::QB_OAUTH2_CONSUMER.auth_code.get_token(params[:code], :redirect_uri => redirect_uri)

在哪里oauth_callback_quickbooks_url = application callback which is also defined in quickbooks app 请注意,您还必须包含oauth2 gem

【讨论】:

  • 我正在尝试集成 quickbook。但我在身份验证方法中遇到了 redirect_uri 错误。我应该在 localhost 之后的 redirect_uri 哈希中指定什么 url。 (在你的情况下,你从哪里得到这个路径'quickbooks_authenticate_callback_path')
  • 只需在控制器中定义回调方法并在路由文件中创建命名路径即可
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 2023-03-04
  • 2021-08-18
  • 2015-04-18
相关资源
最近更新 更多