Quickbook没有检测到apptoken; (PHP)的errorCode = 003102;的StatusCode = 401

时间:2015-12-10 07:14:58

标签: quickbooks-online

我是quickbooks API实现的新手,当我为客户添加API执行API调用时,我总是收到一个错误No apptoken detected; errorCode=003102; statusCode=401。 我正在给我的步骤,请仔细看看。

我的沙盒信息

  • 消费者密钥:qyprdffbBBInX4a82jG73Mreyy96tC
  • 消费者秘密:IgpJzJrYvb9FmmdB7A0ECDGHG62Cp7dqVWjfMTvU
  • 访问令牌:qyprdlo3WrK0KhGZMTeA857AuKiVy2eaAmpXsRvG3jycYaMQ
  • 访问令牌秘密:TdPGpcc8-8AiAdWFiCyb8jAAygH16bzU7VRGaspx4

    我正在使用PHP。 首先,我已经生成了oauth_signature。

  

$ URL =   rawurlencode(' https://sandbox-quickbooks.api.intuit.com/v3/company/408554291/customer&#39);   $ method =' POST&#39 ;; $ parameter =   rawurlencode(' oauth_consumer_key = qyprdffbBBInX4a82jG73Mreyy96tC&安培; oauth_nonce = BlyqIBbv3R4T0P4qglAv1RjoYisMZk1449659733&安培; oauth_signature_method = HMAC-SHA1&安培; oauth_timestamp = 1449659733&安培;组oauth_token = qyprdlo3WrK0KhGZMTeA857AuKiVy2eaAmpXsRvG3jycYaMQ&安培; oauth_version = 1.0&#39);

     

$ ukey =   rawurlencode(' IgpJzJrYvb9FmmdB7A0ECDGHG62Cp7dqVWjfMTvU')'&安培;' .rawurlencode(' TdPGpcUI8AiAdWFiCyb8jAAygH16bzU7VRGaspx4&#39);   $ hasmac = hash_hmac(" sha1",$ BaseURL,$ ukey,1);

和我的oauth_signature是jZ8JhECy/e0kpPbUdZp/o/EUC7U=

当我用这个oauth_signature调用API时,我收到错误'没有检测到apptoken;错误码= 003102;的StatusCode = 401'

我的CURL调用就像这样

  

curl -X POST -H'内容类型:application / json,授权:OAuth   组oauth_token = qyprdlo3WrK0KhGZMTeA857AuKiVy2eaAmpXsRvG3jycYaMQ,oauth_consumer_key = qyprdffbBBInX4a82jG73Mreyy96tC,oauth_signature_method = HMAC-SHA1,oauth_timestamp = 1449659733,oauth_version = 1.0,oauth_nonce = BlyqIBbv3R4T0P4qglAv1RjoYisMZk1449659733,oauth_signature = jZ8JhECy / e0kpPbUdZp / O / EUC7U ='   -d' {"数据":[{" BillAddr":{" Line1":" 86 Topsia",&# 34;市":"加尔各答""国家":"印度"" CountrySubDivisionCode":" WB&#34 ;,"邮编":" 700102"}"名称":"先生""给定名称&#34 ;:。 " ApurbaK""中间名":"库马尔"" FamilyName":" ApurbaK"" PrimaryPhone& #34; {" FreeFormNumber":" 564545465"}" PrimaryEmailAddr" {"地址":" apurbahazra12 @ navsoft 。在"}}]}'   ' https://sandbox-quickbooks.api.intuit.com/v3/company/408554291/customer'

请仔细看看。

谢谢,  Apurba

1 个答案:

答案 0 :(得分:0)

首先,您不希望自己这样做 - 使用库。 OAuth很复杂,自己实施它将是一个毛茸茸的过程,充满了错误。

去抓图书馆:

按照那里链接的快速入门指南,并从示例中受益:

话虽如此,如果您决定自己编写,请确保遵循OAuth规范:

到目前为止,我立即看到您执行的问题是:

  • 您无法像这样对时间戳进行硬编码:&oauth_timestamp=1449659733时间戳应该不断变化,并设置为当前时间戳。

  • 您不能对这样的随机数进行硬编码:&oauth_nonce=BlyqIBbv3R4T0P4qglAv1RjoYisMZk1449659733随机数必须随每个请求更改,因此在您第一次请求后这将失败。

  • 根据规范,您尚未规范化请求参数/对其进行排序。

  • 这是使用cURL指定多个标头的错误方法:-H 'Content-Type: application/json, Authorization: OAuth ...。请参阅cURL文档:http://curl.haxx.se/docs/manpage.html#-H

  • 在您发布的代码中,您实际上并未在任何地方设置$BaseURL,所以现在您要签署一个空字符串(除非您忘记在某处粘贴某些代码?)

  • $ukey设置为什么?它似乎没有在您的代码中定义(您是否忘记粘贴一些代码?)