まず、私は 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) {
}
}