Microsoft Graph API を使用して、Web アプリケーションに対してユーザーを認証しています。SO については、登録ポータルでテスト アプリケーションを登録しました。このポータルは、アプリケーション ID とアプリケーション シークレットを提供します。コードを受け取ってアクセス トークンを返すリダイレクト URLを定義 しました。
public async Task<AuthToken> ExchangeCodeForAccessToken(string code)
{
MicrosoftGraphTokenResponse tokenResponse = null;
using (HttpClient client = new HttpClient())
{
var postFormParameters = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("client_id", _msGraphpParameter.AppId),
new KeyValuePair<string, string>("redirect_uri", _msGraphpParameter.RedirectUrl),
new KeyValuePair<string, string>("code", code),
new KeyValuePair<string, string>("grant_type", "authorization_code"),
new KeyValuePair<string, string>("scope", _msGraphpParameter.Scopes)
};
if (_msGraphpParameter.AppSecret != null)
{
// Secret isn't needed for client apps
postFormParameters.Add(new KeyValuePair<string, string>("client_secret", _msGraphpParameter.AppSecret));
}
var formContent = new FormUrlEncodedContent(postFormParameters);
client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", TokenRefreshContentType);
HttpResponseMessage response = await client.PostAsync(MsGraphTokenRefreshUrl, formContent);
string responseString = await response.Content.ReadAsStringAsync();
tokenResponse = JsonConvert.DeserializeObject<MicrosoftGraphTokenResponse>(responseString);
}
return TransformMSGraphTokenResponseIntoAuthProperties(tokenResponse);
}
私の問題は少し奇妙です。問題なくトークンにアクセスできます。つまり、適切なセットアップが行われています。ただし、いくつかの呼び出しの後 (2) Graph API は、ログイン ライブ ドットコムサーバーが見つからないため、何も返しません。
Cookie と DNS キャッシュを完全に消去しようとしましたが、うまくいきませんでしたが、ラップトップを再起動して電話をかけると、機能し始めたようです。数回呼び出した後も、Login.live.com サーバーが見つかりません。
考えを教えてください。ありがとう