Я использую Microsoft Graph C # .NET SDK для доступа к почтовому ящику пользователя.Проблема в том, что когда я выполняю аутентификацию, токен, который Microsoft отправляет мне обратно, действителен только в течение примерно одного часа, и срок его действия истекает так рано.Но это так раздражает, когда пользователь регистрируется каждые 1 час, просто чтобы увидеть почтовый ящик Outlook.Мне нужно сделать этот логин ПЕРСИСТЕНТНЫМ.
Вот код, который я использую:
public static async Task Run()
{
string secret = "MyDamnPrivateSecret";
PublicClientApplication clientApp = new PublicClientApplication(secret);
GraphServiceClient graphClient = new GraphServiceClient("https://graph.microsoft.com/v1.0", new DelegateAuthenticationProvider(async (requestMessage) =>
{
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", await GetTokenAsync(clientApp));
}));
//Processing mailbox ...
}
private static async Task<string> GetTokenAsync(PublicClientApplication clientApp)
{
if (string.IsNullOrEmpty(Properties.Settings.Default.token) || string.IsNullOrWhiteSpace(Properties.Settings.Default.token))
{
//need to pass scope of activity to get token
string[] Scopes = { "User.Read", "Mail.ReadWrite" };
string token = null;
AuthenticationResult authResult = await clientApp.AcquireTokenAsync(Scopes);
token = authResult.AccessToken;
Properties.Settings.Default.token = token;
Properties.Settings.Default.Save();
return token;
}
else
{
return Properties.Settings.Default.token;
}
}
Есть ли способ продлить срок действия?Или сделать токен обновления или что-то, чтобы сохранить логин?