Ruby on rails rails应用程序中的quickbooks集成(参数OAuth)
我正在创建一个rails应用程序,以将发票发送到quickbooks我正在使用这个gemRuby 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
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分支: