1
トークンをMicrosoft Graph APIで取得します。これは認証ユーザー(マイクロソフト)にトークンservice.Requestを呼び出すためのコードを取得する最初の呼び出しですが、ログインページにリダイレクトできるようにステータスコード302を取得する代わりに送信されます。私はあなたが舞台裏でのOAuthフローを実行することはできません、ステータスコード200Microsoft Graph Api OAuthは、302の代わりにステータスコード200を返します(ログインページにリダイレクトされません)。
public async Task<string> GetBToken()
{
string url = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?"; //https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.UseDefaultCredentials = true;
clientHandler.AllowAutoRedirect = true;
using(var client = new HttpClient(clientHandler))
{
client.BaseAddress = new Uri(url);
// We want the response to be JSON.
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
url = url + "grant_type=authorization_code&client_id=" + appId + "resource=https://graph.microsoft.com/ &response_mode=form_post&response_type=code&redirect_uri=http://localhost/5341/Home/AddC &state=12345&scope=" + string.Join(" ", scopes1);
var request = new HttpRequestMessage(HttpMethod.Get, url);
var result1 = client.SendAsync(request).Result;
result1.EnsureSuccessStatusCode();
string jsonString = await result1.Content.ReadAsStringAsync(); // await response.Content.ReadAsStringAsync();
return jsonString;
}
}
はい、私のアプローチが正しいとは言えませんでしたが、問題は正しいとは言えませんでした。私はあなたの提案に従います。リンクを許可するseparteリダイレクト要求を作成し、一度コードを受信すると、httpclientからトークン要求を送信するよりも、出来た。どうもありがとう –