【发布时间】:2021-06-29 07:31:42
【问题描述】:
我是一个学习 Ruby on Rails 的菜鸟。我正在尝试将我的 ruby on rails 应用程序集成到 Quickbooks。我正在按照this video 的步骤进行操作。当我尝试按“连接到 QuickBooks”按钮进行身份验证时,我被卡住了。
我收到此错误;
我做了一些研究,发现这个错误与URI.escape() 命令有关。我认为他们在 Ruby 3 中删除了它。我该如何解决这个问题?我什至无法弄清楚这个URI.escape() 命令的位置。
这是来自vendors_controller.rb
def authenticate
callback = oauth_callback_vendors_url
token = $qb_oauth_consumer.get_request_token(:oauth_callback => callback)
session[:qb_request_token] = token
# If Rails >= 4.1 you need to do this => session[:qb_request_token] = Marshal.dump(token)
redirect_to("https://appcenter.intuit.com/Connect/Begin?oauth_token=#{token.token}") and return
end
def oauth_callback
at = session[:qb_request_token].get_access_token(:oauth_verifier => params[:oauth_verifier])
# If Rails >= 4.1 you need to do this => at = Marshal.load(session[:qb_request_token]).get_access_token(:oauth_verifier => params[:oauth_verifier])
session[:token] = at.token
session[:secret] = at.secret
session[:realm_id] = params['realmId']
redirect_to root_url, notice: "Your QuickBooks account has been successfully linked."
end
我的初始化器quickbooks.rb
QB_KEY = "I PASTED MY CLIENT ID KEY HERE"
QB_SECRET = "I PASTED MY CLIENT SECRET HERE"
$qb_oauth_consumer = OAuth::Consumer.new(QB_KEY, QB_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"
})
我的rails版本Rails 6.1.4
我的红宝石版本ruby 3.0.1p64
感谢您的宝贵时间。
【问题讨论】:
-
该错误将来自您用于 OAuth 的 gem。快速浏览一下教程中的 gem,它使用的
oauth-plugingem 最后一次发布是在 2013 年,所以后面还有很多 ruby 版本。您可能会寻找更新的教程。quickbooks-rubygem (github.com/ruckus/quickbooks-ruby) gem 似乎得到了合理的维护,并且在其 GitHub 站点上有一些文档,您可以查看。 -
未来的另一个提示:如果您在错误页面上单击“完整跟踪”(您制作了屏幕截图),您可以按照回溯跟踪,它还应该给您提示错误的位置来自。将完整的堆栈跟踪添加到关于 SO 的问题也有助于人们更快地了解如何为您提供帮助。
-
@rmlockerd 谢谢,我目前也在我的代码中使用
quickbooks-ruby。我要求这里的人们提出更可靠的最新指南或方法,但我的问题被否决了,然后被删除。我正在网上寻找更好的教程,但除了这个 7 岁的视频指南之外,没有一个适合我的条件。 -
@trueunlessfalse 我做了并且得到了这条线;
oauth (0.4.7) lib/oauth/helper.rb:12:in 'escape'现在我知道这是因为位于'oauth-plugin'gem 中的助手。 -
您也可以选择从 ruby 2.7 开始,并在问题解决后升级到 ruby 3。使用 rvm 或 rbenv 可能会有所帮助。
标签: ruby-on-rails ruby quickbooks quickbooks-online intuit-partner-platform