Ruby on rails rails应用程序中的quickbooks集成(参数OAuth)

Ruby on rails rails应用程序中的quickbooks集成(参数OAuth),ruby-on-rails,quickbooks,Ruby On Rails,Quickbooks,我正在创建一个rails应用程序,以将发票发送到quickbooks我正在使用这个gemquickbooks ruby每次尝试使用quickbooks进行身份验证时,它都会给出这个错误OAuth::Problem参数\u rejected下面是我的代码 quickbook.rb(初始化器) 控制器中的身份验证方法 def authenticate_quickbooks callback = api_webhooks_quickbook_oauth_callback_path

我正在创建一个rails应用程序,以将发票发送到quickbooks我正在使用这个gem
quickbooks ruby
每次尝试使用quickbooks进行身份验证时,它都会给出这个错误
OAuth::Problem参数\u rejected
下面是我的代码

quickbook.rb(初始化器)

控制器中的身份验证方法

 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
 redirect_uri = oauth_callback_quickbooks_url
      if resp = ::QB_OAUTH2_CONSUMER.auth_code.get_token(params[:code], :redirect_uri => redirect_uri)

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

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"
})
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
回调

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
 redirect_uri = oauth_callback_quickbooks_url
      if resp = ::QB_OAUTH2_CONSUMER.auth_code.get_token(params[:code], :redirect_uri => redirect_uri)
其中
oauth\u callback\u quickbooks\u url=应用程序回调,该回调也在quickbooks应用程序中定义

请注意,您还必须包括
oauth2
gem

您可能希望看到这个问题还有一个旨在支持oauth2.0的quickbooks ruby分支: