¿为什么oauth_callback参数不重定向? (intuit quickbooks api - oauth1.0a)

时间:2018-05-02 12:55:02

标签: php api oauth callback sha1

我的oauth请求有问题,现在我正在接收

oauth_token_secret=<Token>&oauth_token=<Token>&oauth_callback_confirmed=true

但它永远不会重定向变量来执行下一步。

  

我正在使用urlencode()php传递oauth_callback,当然我已经尝试在没有百分比编码的情况下传递它,但仍然无效......

这个回调网址是HMAC-SHA1编码的urlencode()php的双百分比编码。顺便说一句,是获取令牌的唯一方法,否则它会返回签名无效。

  

我已经在支持开发人员部分留下了一个问题   api,但没有答案。

¿这里可以发生什么?

这个Api来自intuit quickbooks

网址示例:

https%3A%2F%2FMyWeb.com%2FMyController

这是HMAC-SHA1的代码示例

// HMAC-SHA1 encoding to get the tokens from quickbooks Api

$callback = urlencode('https://MyWeb.com/MyController'); // First urlencode of the callback url set on the grantUrl setup()


$action = 'GET'; // The Action to perform the request
$action .= '&'; // Append an &
$action .= urlencode('https://oauth.intuit.com/oauth/v1/get_request_token'); // Append the baseUrl request url encoded
$action .= '&'; // Append an &
$action .= urlencode('oauth_callback=' . $callback . '&oauth_consumer_key=<consumerKey>&oauth_nonce=<nonce>&oauth_signature_method=HMAC-SHA1&oauth_timestamp=<timestamp>&oauth_version=1.0'); // Append Parameters url encoded (callbak must be encoded twice)

$secretKey = urlencode('keyHere'); // Set the secretKey urlEncoded
$secretKey .= '&'; // Append an &

$resultant = base64_encode(hash_hmac('sha1', $action, $secretKey, TRUE)); // Get the hash_hmac with a base64_encode.

$f_result = urlencode($resultant); // url encode the $resultant to put it as the signature

这是查询网址

https://oauth.intuit.com/oauth/v1/get_request_token?oauth_callback=https%3A%2F%2FMyWeb.com%2FMyController&oauth_consumer_key=<ConsumerKey>&oauth_nonce=<nonce>&oauth_signature_method=HMAC-SHA1&oauth_timestamp=<timestamp>&oauth_version=1.0&oauth_signature=E0SagYvSY6wxpjp2QRIIP%2Bmz%2Fiw%3D
  

根据API文档,这是通过javascript生成的按钮来实现的。

这是样本:

<script
        type="text/javascript"
        src="https://appcenter.intuit.com/Content/IA/intuit.ipp.anywhere-1.3.3.js">
</script>
<!-- Implement the setup function for the connect button -->
<script>
intuit.ipp.anywhere.setup({
    grantUrl: 'queryUrl post above',
            datasources: {
            quickbooks : true,
            payments : true
            },
            paymentOptions:{
                intuitReferred : true
            }
});
</script>

0 个答案:

没有答案