4

QB デスクトップ版を使用しています。また、QuickBooks デスクトップ版の「アクセス トークン」/「アクセス トークン シークレット」を 180 日で期限切れになり、更新はトークンの有効期限から 30 日以内に行う必要があるため、更新/再生成したいと考えていました。以下のコードで同じことを試しましたが、機能せず、次のようなエラーが発生します。

<RestResponse xmlns="http://www.intuit.com/sb/cdm/v2"><Error RequestId="14aa97c48321489db48254e4bdb25d00"><RequestName>ErrorRequest</RequestName><ProcessedTime>2013-04-05T11:43:08+00:00</ProcessedTime><ErrorCode>401</ErrorCode><ErrorDesc>Invalid security token</ErrorDesc></Error></RestResponse>

トークン生成用のログに記録された要求/応答はありません。

 string myRealmId = "000000000000000";
        string myAccessToken = "0000000000000000000000000000000000000";
        string myAccessTokenSecret = "00000000000000000000000000000000000";

        string myAppToken = "00000000000000000000000000000000000";
        string myConsumerKey ="00000000000000000000000000000000000";
        string myConsumerSecret ="00000000000000000000000000000000000";

        OAuthConsumerContext consumerContext = new OAuthConsumerContext
        {
            ConsumerKey =myConsumerKey,
            SignatureMethod = SignatureMethod.HmacSha1,
            ConsumerSecret = myConsumerSecret
        };

        OAuthSession oSession = new OAuthSession(consumerContext, "https://oauth.intuit.com/oauth/v1/get_request_token",
                        "https://workplace.intuit.com/Connect/Begin",
                        "https://oauth.intuit.com/oauth/v1/get_access_token");

        oSession.ConsumerContext.UseHeaderForOAuthParameters = true;

        oSession.AccessToken = new TokenBase
        {
            Realm = myRealmId,
            Token = myAccessToken,
            ConsumerKey = myConsumerKey,
            TokenSecret = myAccessTokenSecret
        };

        var body = "<AdvancedReportQuery xmlns=\"http://www.intuit.com/sb/cdm/v2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.intuit.com/sb/cdm/v2 ..//RestDataFilter.xsd\"><BalanceSheetStd><OfferingId>ipp</OfferingId><EndTransactionDate>2012-06-01</EndTransactionDate></BalanceSheetStd></AdvancedReportQuery>";

        IConsumerRequest conReq = oSession.Request();
        conReq = conReq.Post().WithRawContentType("text/xml").WithRawContent(System.Text.Encoding.ASCII.GetBytes(body)); 
        conReq = conReq.ForUrl("https://services.intuit.com/sb/advancedreport/v2/508053445");
        try
        {
            conReq = conReq.SignWithToken();
        }
        catch (Exception ex) {}

        string serviceResponse = conReq.ReadBody();

        }
        catch (Exception Err) {}

    }

ありがとう、

レシュマ D.

4

2 に答える 2

3

トークンの有効期限が切れる 30 日以内に Reconnect API を呼び出す必要があります。トークンの有効期限がすでに切れているようです。そのため、Oauth フローを再度実行する必要があります。

http://docs.developer.intuit.com/0025_Intuit_Anywhere/0060_Reference/3002_Reconnect_API

DevDefined と DevKit を使用した C# の例:

https://gist.github.com/IntuitDeveloperRelations/5338762

于 2013-04-05T12:58:22.627 に答える