连接 Quickbooks:Oauth 问题,使用 qbo_api 的 GrantUrl 错误

Connecting with Quickbooks: Oauth Troubles, GrantUrl Error using qbo_api

可能与 Ruby on Rails integration with Quickbooks not working

重复

我意识到这是一个纯粹的编码相关错误。由于我现在对 rails 框架的了解有限,我无法让我的 rails 应用程序连接到 Quickbooks。使用此 gem https://github.com/minimul/qbo_api,我在我的网络应用程序上获得了按钮。但是,我的 granturl 代码部分仍然出现路由错误。

我的控制台中的命令 ruby App.rb 运行良好。但是在我的 rails 应用程序中集成 Sinatra 代码会导致此错误。

这是我在config/initializers

的家App.rb
class HomeApp < Sinatra::Base
require "bundler/setup"
require 'sinatra'
require 'json'
require 'openssl'
require 'base64'
require 'omniauth'
require 'omniauth-quickbooks'
require 'dotenv'
require 'qbo_api'
Dotenv.load "#{__dir__}/../.env"


PORT  = 3000
CONSUMER_KEY = 'blah blah'
CONSUMER_SECRET = 'blah blah'

set :port, PORT
use Rack::Session::Cookie, secret: '34233adasf'
use OmniAuth::Builder do
....
....

end

在我的 config.ru 我有以下内容

require ::File.expand_path('../config/environment', __FILE__)
run Rails.application
Dynopoker.configure do |config|
config.address = 'http://wakemydyno.com'
require "HomeApp"

控件成功传递到我的index.erb文件,但此时抛出错误

<script>
intuit.ipp.anywhere.setup({
  grantUrl: "http://localhost:<%= @port %>/auth/quickbooks",

我使用 rails 4 和 ruby 2,我的错误是

No route matches [GET] "/auth/quickbooks"

幸好,在意识到这个解决方案的答案时,我被允许沉浸在自己的愚蠢中。

所以我改变了我的 routes.rb 如下:

Rails.application.routes.draw do
get "/" => HomeApp, :anchor =>false
match '/auth/:provider/callback' => 'quickbooks#callback', via: [:get,:post]

我还删除了

'require HomeApp' 

来自我的 config.rufile.

的行

基本上我创建了一个 quickbooks 控制器并在控制器内添加了 callback.html.erb 文件用于回调操作。我的代码没有使用 Sinatra 应用程序进行回调,而是仅使用此 quickbooks 路由进行回调。其余代码完全来自 Sinatra 代码。

不知道这是否是使用 gem 的正确方法。但因为它有效,我现在坚持使用它。