Kvo*_*e28 5 ruby quickbooks ruby-on-rails quickbooks-online intuit-partner-platform
我是一个研究 Ruby on Rails 的菜鸟。我正在尝试将 ruby on Rails 应用程序集成到 Quickbooks 中。我正在按照这个视频的步骤进行操作。当我尝试按“连接到 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
Run Code Online (Sandbox Code Playgroud)
我的初始化程序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"
})
Run Code Online (Sandbox Code Playgroud)
我的 Rails 版本Rails 6.1.4
我的 ruby 版本ruby 3.0.1p64
感谢您的时间。
obe*_*nda 12
我知道很多人说 URI.escape 不好,但它对我来说已经足够好了,因为我只想转义包含非英文字符的 url。
所以我只是猴子修补它
在 /config/initializers/functions_overrides.rb 下添加以下内容(文件名可以是你想要的任何名称)
require 'uri'
module URI
class << self
def escape(str)
alpha = "a-zA-Z"
alnum = "#{alpha}\\d"
unreserved = "\\-_.!~*'()#{alnum}"
reserved = ";/?:@&=+$,\\[\\]"
unsafe = Regexp.new("[^#{unreserved}#{reserved}]")
str.gsub(unsafe) do
us = $&
tmp = ''
us.each_byte do |uc|
tmp << sprintf('%%%02X', uc)
end
tmp
end.force_encoding(Encoding::US_ASCII)
end
end
end
Run Code Online (Sandbox Code Playgroud)
使用https://developer.intuit.com/app/developer/qbo/docs/develop/sdks-and-samples-collections/ruby
\nOAuth Ruby 客户端
\nIntuit 提供了一个 OAuth 2.0 客户端,它提供了一组方法,可以更轻松地使用 Intuit\xe2\x80\x99s OAuth 和 OpenID 实现。
\n社区支持的 Ruby SDK
\n社区支持的 Ruby SDK 使您可以轻松地将 Web 应用程序与 QuickBooks Online API 集成。本指南假设您有一个想要与 QuickBooks Online 集成的现有 Web 应用程序。
\n| 归档时间: |
|
| 查看次数: |
8190 次 |
| 最近记录: |