我的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>