1

まず、私は Xero API を使用していません。これは、具体的には Xero よりも OAuth2 に関する質問だと思います。

問題が一般的な OAuth2 の問題なのか、OAuth2 の Xero 実装なのかはよくわかりません。認証に成功し、Xero からトークンなどを取得できます。請求書と連絡先のエンドポイントへの Get 要求を成功させることさえできます。私の問題は、何かを投稿しようとすることです。つまり、請求書を作成します。

サーバーは 400 Bad request で応答します。XMLをAPIテスターに​​入れることで、実際の投稿データが正しいことを確認しましたが、すべて問題ありません。

投稿リクエストはhttpwebequest、クエリ文字列を含む標準の , (POST) で?oauth_signature=[sig here]あり、実際の投稿データ URL はエンコードされてストリーム経由で送信されるべきではありませんか? 私の実装は正しいですか、問題を他の場所で探す必要がありますか? フォームで送信されたデータは、署名に含まれているはずですか?

{
    byte[] reqData = encode.GetBytes(postData);

    HttpWebRequest request = WebRequest.CreateHttp(url + querystring) as HttpWebRequest;
    request.Method = "POST";
    try {
        using (Stream stream = request.GetRequestStream) {
            stream.Write(reqData, 0, reqData.Length);
        }

        using (HttpWebResponse response = request.GetResponse) {
            Stream dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);

            dynamic responseFromServer = reader.ReadToEnd();
            return responseFromServer;
        }

    } catch (Exception ex) {
    }
}
4

2 に答える 2