Как правильно обрабатывать токены аутентификации Google OAuth2 в C3 - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть 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.

Как бы вы это организовали?

...