使用上传 quickbook 上传图片附件 api

Upload image attachment with upload quickbook api

过去两天我一直在寻找解决方案,这也是我的第一个问题,请耐心等待。

我正在尝试使用上传 qbo api 上传 jpg 图像,但不断收到错误代码 500 和消息 Unsupported OperationOperation 无法使用内容类型不受支持。

我的要求是:

@client = Signet::OAuth1::Client.new(    
    :temporary_credential_uri => "https://oauth.intuit.com/oauth/v1/get_request_token",    
    :authorization_uri => "https://appcenter.intuit.com/Connect/Begin",    
    :token_credential_uri => "https://oauth.intuit.com/oauth/v1/get_access_token",    
    :client_credential_key => App.find_by_name('quickbooks').clientid,    
    :client_credential_secret => App.find_by_name('quickbooks').clientsecret    
   )    
   @client.token_credential_key = quickbooks.accesstoken    
   @client.token_credential_secret = quickbooks.refreshtoken    
   realmid =quickbooks.uid    
   url = Rails.env.eql?("development")? "sandbox-quickbooks.api.intuit.com" : "quickbooks.api.intuit.com"

object = {
       "AttachableRef": [
       {
        "EntityRef": {
         "type": "Invoice",
         "value": "95"
        }
       }
      ],
       "FileName": params[:file].original_filename,
       "ContentType": "image/jpg"
      }
   original_request = [
     'Post',
     "https://#{url}/v3/company/#{realmid}/upload",
     [  
       ['Content-Type', 'application/json'],
       ['boundary', '0be01941e049'],
     ],
     [object.to_json]
   ]
   response = @client.fetch_protected_resource(:request => original_request)

响应得到:

<Error code=\"500\"><Message>Unsupported Operation</Message><Detail>Operation Cannot consume content type is not supported.</Detail></Error></Fault></IntuitResponse>"

如有任何帮助,我们将不胜感激。谢谢

:编辑

使用quickbook-ruby gem---- 'github.com/ruckus/quickbooks-ruby#uploading-an-actual-file'

::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"
})
meta = Quickbooks::Model::Attachable.new
meta.file_name = "monkey.jpg"
meta.note = "A note"
meta.content_type = "image/jpg"
entity = Quickbooks::Model::BaseReference.new(123, type: 'Transfer')
meta.attachable_ref = Quickbooks::Model::AttachableRef.new(entity)
doc_path = 'Add file path'
 upload_service = Quickbooks::Service::Upload.new(:realm_id=> '123XXX', :access_token=> 'QTYXXXXX')
result = upload_service.upload(doc_path, "image/jpeg")

我遇到了一个错误 NoMethodError:"erXXXXXXXXXXXXXXXX6":String

的未定义方法“post_with_multipart”

尽管我没有在我的代码中使用任何名为 post_with_multipart 的方法,但这是我在尝试上传图片时得到的响应 结果 = upload_service.upload(doc_path, "image/jpeg")

所以如果有人来到这里寻找解决方案,我就是这样解决的。 所以我共同做错的是我没有通过 OAuth 传递访问令牌。

token = OAuth::AccessToken.new($qb, oauth_token, oauth_secret)