2016-06-14 16 views
1

Unter den verschiedenen Funktionen möchte ich Google Drive mit meiner C# -Anwendung hinzufügen, damit sich Benutzer anmelden und auf die Dateien ihres Laufwerks zugreifen können. Ich recherchieren vielen Code in dieser Web und aus anderen Quellen, und ich hatte Erfolg mit dem folgenden:C# mit eingebettetem Google Drive

UserCredential credential; 

using (var stream = 
    new FileStream("client_id.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 file saved to: " + credPath); 
} 

// Create Drive API service. 
var service = new DriveService(new BaseClientService.Initializer() 
    { 
     HttpClientInitializer = credential, 
     ApplicationName = ApplicationName, 
    }); 

// Define parameters of request. 
FilesResource.ListRequest listRequest = service.Files.List(); 
//listRequest.PageSize = 10; 
listRequest.Fields = "nextPageToken, files(id, name)"; 

// List files. 
IList<Google.Apis.Drive.v3.Data.File> files = listRequest.Execute().Files; 
Console.WriteLine("Files:"); 
if (files != null && files.Count > 0) 
{ 
    foreach (var file in files) 
    { 
     Console.WriteLine("{0} ({1})", file.Name, file.Id); 
    } 
} 
else 
{ 
    Console.WriteLine("No files found."); 
} 
Console.Read(); 

Ich musste meine Anmeldeinformationen auf dem Web von Google Drive für Entwickler bekommen. Dieser Code funktioniert gut, aber es bedeutet, dass jeder Nutzer meiner Anwendung seine eigenen Google Drive-Anmeldedaten manuell generieren muss, und ich kann nicht herausfinden, wie dies zu automatisieren ist.

Mein Ziel ist es, die Benutzeroberfläche für den Benutzer mit zwei Kästchen für die Eingabe ihrer Google E-Mail und Passwort, dann die Arbeit für die Authentifizierung und wenn es gelingt, der Benutzer hätte Zugriff auf ihre Dateien.

+0

Bitte überprüfen Sie diese [URL] (http://stackoverflow.com/help) es wird nützlich sein, um Ihre Qualität des Inhalts –

Antwort

0

Willkommen in der Welt der offenen Authentifizierung. Damit Ihre Anwendung auf Benutzerdaten zugreifen kann, müssen sie Ihrer Anwendung die Berechtigung zum Zugriff auf ihre Daten erteilen oder sie "autorisieren". Die Bereiche, die Sie senden, geben dem Benutzer an, welche Berechtigungen Sie für die Ausführung Ihrer Anwendung benötigen. Sie erhalten ein Popup-Fenster, in dem sie aufgefordert werden, Ihre Anwendung mit diesen Berechtigungen zu autorisieren. Einmal gewährt, können Sie auf ihre Daten zugreifen.

Die Anmeldung eines Benutzers für sein Login und Passwort für den Zugriff auf ein Konto wird als Client-Login bezeichnet. Client-Login wurde 2015 von Google geschlossen. Es ist nicht möglich, mit einem Login und Passwort auf ihr Konto zuzugreifen. Sie müssen Oauth2 verwenden und den Zugriff anfordern, wie es der Code gerade tut.

Ihr Code funktioniert so wie er ist und funktioniert so wie er sollte. Sie können dort die Autorisierung nicht automatisieren, sie müssen auf das Symbol klicken.

+0

Zunächst, danke, dass Sie sich Zeit für das Lesen meines Problems und die Beantwortung nehmen. Nach all meinen Recherchen und Ihrer Antwort sehe ich keine Möglichkeit mehr, meine Idee Wirklichkeit werden zu lassen, denn es gibt keine Möglichkeit, eine Anwendung zu entwickeln, die einem Nutzer den Zugriff auf sein Google Drive ermöglicht Zugriff auf API-Funktionen. –

+0

Der Benutzer muss Ihre Anwendung nur einmal genehmigen – DaImTo

+0

Ja, aber das wäre die Art und Weise für die Benutzer mit nur einem Laufwerk durch die Anwendung zu interagieren, soweit es mich betrifft. Mein Ziel, wenn es mit Google APIs möglich ist, ist, dass sich jeder Benutzer in meiner Anwendung anmeldet, mit seinem Gmail und Passwort (in meiner Anwendung oder im Browser) auf die Dateien in seinem persönlichen Laufwerk zugreifen kann die Anwendung in irgendeiner Art von Liste. Aber wenn ich dieses Recht verstehe, besteht die einzige Möglichkeit darin, für jeden Benutzer eine Entwicklerberechtigung zu generieren, und das ist mein Problem. –