getAccountTransactions上的IPP CustomerAgg 401

时间:2014-07-22 19:33:52

标签: intuit-partner-platform

我为我的应用程序构建的用户流程是用户可以单击myAccounts,我将显示getCustomerAccounts结果。这非常有效。然后,对于每个帐户,我有一个名为get transactions的超链接。这会将用户带到一个新页面,该页面应该列出该帐户的交易。出于某种原因,我总是在调用getAccountTransactions时获得401代码:ApplicationAuthenticationFailed,即使之前调用的getCustomerAccounts工作正常。

我很困惑,因为我认为401失败的身份验证与之前的调用完全相同。这是我的代码:

function get_transactions($ accountID)

{

    IntuitAggCatHelpers::GetOAuthTokens( $oauth_token, $oauth_token_secret);

    $signatures = array( 'consumer_key'     => OAUTH_CONSUMER_KEY,

        'shared_secret'    => OAUTH_SHARED_SECRET,

        'oauth_token'      => $oauth_token,

        'oauth_secret'     => $oauth_token_secret);





    $txnStartDate = '2014-06-01';  // YYYY-MM-DD

    $url = FINANCIAL_FEED_URL ."v1/accounts/$accountID/transactions?txnStartDate=$txnStartDate";

    $action = 'GET';



    $oauthObject = new OAuthSimple();

    $oauthObject->setAction( $action );

    $oauthObject->reset();



    $result = $oauthObject->sign(

        array

        (

            'path'      => $url,

            'parameters'=>

                array

                (

                    'oauth_signature_method'    => 'HMAC-SHA1',

                    'Host'  => FINANCIAL_FEED_HOST

                ),

            'signatures'=> $signatures

        )

    );



    $options = array();

    $curlError = fopen('php://temp', 'rw+');

    $options[CURLOPT_STDERR] = $curlError;

    $options[CURLOPT_CUSTOMREQUEST] = $action;

    $options[CURLOPT_URL] = $result['signed_url'];

    $options[CURLOPT_HEADER] = 1;

    $options[CURLOPT_VERBOSE] = 1;

    $options[CURLOPT_RETURNTRANSFER] = 1;

    $options[CURLOPT_SSL_VERIFYPEER] = true;

    $options[CURLOPT_HTTPHEADER] = array

    (

        'Accept:application/json',

        'Content-Type:application/json',

        //'Content-Length:' . strlen( $postData ),

        'Host:'. FINANCIAL_FEED_HOST,

        //'Authorization:' . $result['header']

    );



    $curlError = fopen('php://temp', 'rw+');

    $options[CURLOPT_STDERR] = $curlError;



    $ch = curl_init();

    curl_setopt_array( $ch, $options );

    $responseText = urldecode( curl_exec( $ch ) );

    echo $responseText;

    //display curl http conversation

    rewind( $curlError );

    stream_get_contents( $curlError );

    fclose( $curlError );

    $httpCode = curl_getinfo( $ch, CURLINFO_HTTP_CODE );

    curl_close( $ch );

    return $responseText;

}

2 个答案:

答案 0 :(得分:0)

使用相同的证书(.p12),请尝试从APIExplorer工具调用上述getAccountTransaction。

https://developer.intuit.com/apiexplorer?apiname=CustomerAccountData

用法参考 - https://developer.intuit.com/docs/0020_customeraccountdata/007_firstrequest

如果效果很好,请将请求标头和网址与上述代码中的相同。 401建议您的OAuth标头未正确形成/不正确时出现身份验证错误。以上比较应该排除这一点。

PN - 在ApiExplorer中上传.p12文件(SAML)时,我收到以下错误消息。 “您的证书无效。请使用base64编码的CER格式并确保该文件不为空”。如果你得到相同的话就不能在ApiExplorer中测试。

由于

答案 1 :(得分:0)

这对我有用:

$result = $oauthObject->sign(array(
    'path'      => FINANCIAL_FEED_URL . 'v1/accounts/400037865348',
    'parameters'=> array('oauth_signature_method' => 'HMAC-SHA1', 
    'Host'=> FINANCIAL_FEED_HOST,
    'txnStartDate' => '2014-01-01',
    'txnEndDate' => '2014-08-29'),
    'signatures'=> $signatures));

https://intuitpartnerplatform.lc.intuit.com/questions/797819-how-to-get-txnstartdate-into-my-url-without-breaking-oauth-authentication找到。