Локально сохраненные учетные данные Google Drive API 3

Я создаю настольное приложение на C#. В первый раз, когда я запустил свое приложение, все прошло нормально, они попросили меня войти в систему и получить разрешение. Теперь я не могу войти с другой учетной записью, так как они сохранили все локально. Я попытался удалить файл в ~/.credentials/drive-dotnet-quickstart.json и да, это сработало, но снова только после того, как они восстановили учетные данные, но где-то еще и я не могу найти где. Я хочу иметь возможность войти в систему с другой учетной записи, и так как мне также нужно изменить область для разрешения проблемы, я должен удалить ранее сохраненные учетные данные. Вот как я вхожу.

using (var stream =
            new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
        {

            string credPath = System.Environment.GetFolderPath(
                System.Environment.SpecialFolder.Personal);
            credPath = Path.Combine(credPath, ".credentials/drive-dotnet-quickstart.json");
            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,
                Scopes,
                "user",
                CancellationToken.None,
                new FileDataStore(credPath, true)).Result;
        }
        Console.WriteLine(credential.ToString());
        service = new DriveService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = ApplicationName,
        });

Как я могу удалить сохраненные учетные данные? Как отключить механизм сохранения учетных данных?

Спасибо.

1 ответ

Просто удалите файл токена, который находится в папке "credPath"

Вы можете "Выйти", позвонив в ожидании credential.RevokeTokenAsync() или используйте другой идентификатор пользователя в GoogleWebAuthorizationBroker.AuthorizeAsync

using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
{
    var flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
    {
        ClientSecretsStream = stream,
        Scopes = new[] { DriveService.Scope.DriveReadonly },
        DataStore = new FileDataStore(credPath, true)
    });

    credential = new UserCredential(flow, userId,
        await flow.LoadTokenAsync(userId, CancellationToken.None)
    );

    bool res = await credential.RevokeTokenAsync(CancellationToken.None);
    //credential = await GoogleWebAuthorizationBroker
    //    .AuthorizeAsync(
    //        stream,
    //        new[] { DriveService.Scope.DriveReadonly },
    //        userId,
    //        CancellationToken.None,
    //        new FileDataStore("oauth/drive"))
    //    ;
    //Console.WriteLine("Credential file saved");
}

Чтобы проверить, существуют ли учетные данные в локальном

await new FileDataStore(credPath, true).GetAsync<TokenResponse>(userId) != null
//or
await flow.LoadTokenAsync(userId, CancellationToken.None) != null
Другие вопросы по тегам