У меня есть C# приложение WPF, с которым мне нужно отправлять электронные письма. В настоящее время вся аутентификация выполняется одним способом, но имеет несколько недостатков.
var credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets
{
ClientId = "571525255076-cmjb3hgt75uio3r3601col63pmk8m4i0.apps.googleusercontent.com",
ClientSecret = "Ztc3pCywNidIsqkH6b4ed0KX"
},
new[] {"email", "profile", "https://mail.google.com/"},
"user",
CancellationToken.None
);
await credential.RefreshTokenAsync(CancellationToken.None);
accessToken = credential.Token.AccessToken;
var signature = await GoogleJsonWebSignature.ValidateAsync(credential.Token.IdToken);
username = signature.Email;
1) Невозможно выйти из системы для пользователя, поскольку токен кэшируется
* 1005. * 2) Единственный способ выйти из системы - отозвать ее в Google, что приводит к ошибке с первой попытки, а затем при необходимости повторно подтвердить подлинность, но это сбивает с толку пользователя
3) Это не когда-либо проверять, является ли токен все еще действительным
4) Я мог бы найти способ загрузить сохраненный (в AppData через API) токен. Я могу десериализовать его как пользовательский класс, но не могу найти способ сделать класс учетных данных API.
Как бы вы это организовали?