0

我正在尝试通过公共应用程序连接到 Xero API,并且我有一个单独的进程来执行 oAuth 流程,该流程存储了令牌和令牌机密,然后我转身在此脚本中使用它们。

我的问题是,当我在 HTTParty 调用中使用该令牌时,我不断收到 Consumer_key_unknown 错误,我不知道为什么。

脚本;

require 'httparty'

def nonce_generator()
  random = Random.new
  random.rand(100000000000)
end

//statics for testing
XERO_API_URL = 'https://api.xero.com/api.xro/2.0/'
TOKEN = "token received back from initial oauth process"
TOKEN_SECRET = "token secret received back from initial oauth process"
XERO_CONS_KEY = "my cons key per Xero Developer/Applications page"
XERO_CONS_SECRET = "my cons secret per Xero Developer/Applications page"
AUTH = "oauth_consumer_key=#{XERO_CONS_KEY}&
    oauth_token=#{TOKEN}&
    oauth_token_secret=#{TOKEN_SECRET}&
    oauth_signature_method=RSA-SHA1&
    oauth_timestamp=#{Time.now.to_i}&
    oauth_nonce=#{nonce_generator()}"

//test it works
xero_accounts =  HTTParty.get("#{XERO_API_URL}/accounts", :headers => { "Authorization" => AUTH }, "Accept" => "application/json")

注意:为了便于查看,我在这里将 AUTH 拆分为多行,它们都在我的脚本中的一行上。

我已经尝试将 AUTH 换成任何一个;

AUTH = "Token #{TOKEN}"
AUTH = "Bearer #{TOKEN}"

没有效果。我在 Kounta API 中使用了一个类似的脚本,它通过 Bearer 令牌工作。

我曾考虑过使用 Xeroizer/Xero Gateway gems,但两者都是为了为您执行 oAuth 并继续推进而构建的,而我已经将其作为一个单独的过程完成了。

欢迎任何意见!

4

1 回答 1

0

放弃尝试以这种方式对其进行排序并筛选宝石,直到我找到一个从访问令牌方法获得的授权,该方法工作正常;

require 'xeroizer'

client = Xeroizer::PublicApplication.new(XERO_CONS_KEY, XERO_CONS_SECRET)
client.authorize_from_access(TOKEN, TOKEN_SECRET)

puts client.Organisation.all
于 2015-11-19T09:31:10.443 回答