2016-06-14 3 views
1

Среди различных функций я хочу включить Google Drive с моим приложением C#, чтобы пользователи могли входить в систему и получать доступ к файлам своего диска. Я исследовал много кода в этой сети и из других источников, и я имел успех следующий:C# с встроенным Google Диском

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(); 

я должен был получить свои полномочия на паутине Google Drive для разработчиков. Этот код работает хорошо, но это означает, что каждый пользователь моего приложения должен будет вручную создать учетные данные Google Диска, и я не могу понять, как его автоматизировать.

Моя цель - предоставить интерфейс для пользователя, который показывает два окна ввода данных своего электронного письма и пароля Google, а затем выполняет работу по проверке подлинности, и если это удастся, пользователь получит доступ к своим файлам.

+0

Пожалуйста, проверьте это [URL] (http://stackoverflow.com/help), будет полезно поставить качество вашего контента –

ответ

0

Добро пожаловать в мир Open Authentication. Чтобы ваше приложение получало доступ к данным пользователей, они должны предоставить вашему приложению разрешение на доступ к их данным или «авторизацию». Отправленные вами области - это то, что используется, чтобы сообщить пользователю, какие разрешения вам понадобятся для запуска вашего приложения. Им предоставляется всплывающее окно с просьбой разрешить ваше приложение с этими разрешениями. После предоставления вы можете получить доступ к своим данным.

Запрос пользователя на регистрацию и пароль для доступа к учетной записи называется именем клиента. Вход пользователя был закрыт Google в 2015 году, и вы не можете получить доступ к своей учетной записи, используя логин и пароль. Вы должны использовать Oauth2 и запрашивать доступ, как это делает ваш код.

Ваш код работает так, как есть, и он работает так, как должен. Вы не можете автоматизировать там авторизацию, они должны нажать на нее сами.

+0

Во-первых, спасибо, что нашли время для чтения моей проблемы и ответа. В конце концов, все мои исследования и ваш ответ я вижу более невозможным, чтобы сделать мою идею реальной, поскольку сейчас нет возможности разработать приложение, предоставляющее пользователю доступ к его приводу Google, они всегда будут вынуждены создавать учетные данные разработчиков для доступ к функциям api. –

+0

Пользователь должен только одобрить ваше приложение – DaImTo

+0

Да, но это будет способ для пользователей взаимодействовать только с одним диском через приложение, насколько мне известно. Моя цель, если это возможно сделать с помощью API Google API, заключается в том, что каждый пользователь регистрируется в моем приложении, получает доступ к его gmail и паролю (в моем приложении или в браузере), а затем они могут видеть файлы на своем личном диске в приложение в каком-то списке. Но если я понимаю это право, единственный способ сделать это - генерировать учетные данные разработчика для каждого пользователя, и это моя проблема. –

Смежные вопросы