私は私のAPIからのアクセストークンを取得した後、私はこのメソッドを呼び出しています:RestSharpを使用して、oAuth2ベアラトークンを使用してASP.NET Web APIにPOSTリクエストを実行するにはどうすればよいですか?
[Authorize]
[HttpPost]
public HttpResponseMessage BatchGeocode([FromBody] InputDataClass inputData)
{
//do stuff, return a HttpResponseMessage
}
私は要求を作成し、このようにポストマンを使用して、予想される応答を取得することができます
私は上記のURLと入力データを使用してRestSharpを使用するアプリケーションで同じAPIメソッドを呼び出そうとしています:
var client = new RestClient(url);
var request = new RestRequest(Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer " + accessToken);
request.Parameters.Clear();
request.AddParameter("application/json", JsonConvert.SerializeObject(apiInput), ParameterType.RequestBody);
ここでapiInput
はAPI入力パラメータと一致するオブジェクトです - JsonConvert.SerializeObject()
でシリアル化されたとき、私はPostman経由でAPIリクエストの本文に使用されているものと同じ文字列を取得します。
これが実行されると、私が戻ってくるメッセージは「この要求に対して承認が拒否されました」です。私がローカルで実行しているAPIの私のブレークポイントはヒットしていないので、呼び出し元のアプリケーションでリクエストを適切に構造化していないと思うようになります。 RestSharpを使用して、oAuth2ベアラトークンを使用してASP.NET Web APIにPOSTリクエストを実行するにはどうすればよいですか?
Hmmmm - リクエストを取得し、RestSharpが実際にトークンを適切に追加していることを確認するために、「Fiddler 4」のようなツールを試してみましたか? RestSharpからの要求は全く同じではありませんように、トークンの文字列が間違っているよう –
ように簡単かもしれませんはい、それが見えます。フィドラーで比較された2つのリクエスト間の[ここにはdiffがあります](http://www.diff-online.com/view/593b2b65482b0)。 RestSharpリクエストに「Authorization」ヘッダーがないように見えます。これはどうやってやるべきかわかりません。 RestSharpリクエストでAuthorizationヘッダーを使用してベアラートークンを使用する方法に関する適切な例やドキュメントを見つけることができませんでした。 –