1. ホーム
  2. c#

C#でOAuth 2.0認証トークンを取得する方法

2023-09-11 04:27:06

質問

私は以下のような設定をしています。

次に、ヘッダーのベアラートークンを使用して、getコールを行う必要があります。

Postmanでこれを動作させることができますが、C#でこれを実装する方法を見つけ出そうとすると壁にぶつかります。私は RestSharp を使用してきました (ただし、他のものにもオープンです)。それはコンソールアプリなので、ベルやホイッスルは必要ありません。

最終的に、私は自分のアプリが (プログラム的に) トークンを取得し、その後の呼び出しにそれを使用したいのです。私が求めているものを明確に説明するドキュメントまたは例を示してくれる人に感謝します。私が遭遇したすべては、部分的であるか、または異なるフローで動作するサービス用です。

ありがとうございます。

どのように解決するのですか?

Postmanで コードを生成する をクリックし、次に コードスニペットの生成 のダイアログで、C# (RestSharp)を含む別のコーディング言語を選択することができます。

また、アクセストークンのURLだけが必要なはずです。フォームのパラメータはその後です。

grant_type=client_credentials
client_id=abc    
client_secret=123

コードスニペットです。

/* using RestSharp; // https://www.nuget.org/packages/RestSharp/ */

var client = new RestClient("https://service.endpoint.com/api/oauth2/token");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", "grant_type=client_credentials&client_id=abc&client_secret=123", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

レスポンスボディからアクセストークンを取得することができます。例えば ベアラ というトークンタイプの場合、その後の認証済みリクエストに以下のヘッダを追加することができます。

request.AddHeader("authorization", "Bearer <access_token>");