2016-03-30 18 views
0

C# 'da bir masaüstü uygulaması oluşturuyorum. Uygulamamı ilk kez başlattığımda her şey yolunda gitti, giriş yapmamı ve izin almamı istedi. Artık her şeyi yerel olarak kaydettikleri için başka bir hesapla giriş yapamıyorum. ~/.credentials/drive-dotnet-quickstart.json dosyasında dosyayı silmeyi denedim ve evet çalıştı ama yine de yalnızca bir kez yeniden basıldıklarında ve nerede olduğunu bulamıyorum. Farklı hesaplardan giriş yapabilmeyi ve aynı zamanda daha önce kaydedilmiş kimlik bilgilerini silmem için izin konusunu da değiştirmem gerektiğinden emin olmak istiyorum. Nasıl girdiğim var.Yerel olarak kaydedilen kimlik bilgileri google drive api 3

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, 
     }); 

Kayıtlı kimlik bilgilerini nasıl silebilirim? Kimlik bilgileri kaydetme mekanizmasını nasıl devre dışı bırakabilirim?

Teşekkür ederiz.

+0

Hoşgeldin varolan olup olmadığını kontrol etmek için GoogleWebAuthorizationBroker.AuthorizeAsync

yılında
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"); } 

başka kullanıcı kimliği kullanabilirsiniz. Bir sorunla karşılaştığınız kodu yayınlamıyorsanız, insanların size yardımcı olması çok zordur. Aşağıdaki yorum gibi tahminlere yol açar. SO – DaImTo

+1

bir dahaki sefere posta kodu lütfen Google .net istemci kütüphanesini kullandığınızı tahmin edeceğim, sonra GoogleWebAuthorizationBroker.AuthorizeAsync'i çağırdığınızı tahmin edeceğim. Ve bu parametrede kullanıcı parametresini değiştirirseniz, açılır ve farklı bir kullanıcının erişimini talep edeceğini söyler. Kimlik bilgileri o kullanıcıya göre depolanır. – DaImTo

cevap

0

sizi bekliyor arayarak credential.RevokeTokenAsync() "Çıkış" veya kimlik bilgisi yığın yerel

await new FileDataStore(credPath, true).GetAsync<TokenResponse>(userId) != null 
//or 
await flow.LoadTokenAsync(userId, CancellationToken.None) != null 
İlgili konular