Я создал программу, которая использует google drive api для чтения данных из файла на Google Диске.Как предоставить учетные данные программным образом для использования google drive api в C# или vb.net?
При первом запуске приложения открывается веб-браузер с просьбой войти в систему с учетной записью Google.
Я хочу предоставить приложению имя пользователя и пароль, чтобы автоматически получать учетные данные, чтобы пользователям не нужно было знать имя пользователя и пароль моей учетной записи Google.
здесь код в vb.net:
Dim credential As UserCredential
Using stream = New FileStream("client_secret.json", FileMode.Open, FileAccess.Read)
Dim credPath As String = 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)
End Using
//I want to provide the username and password in the app so that it doesn't open a web browser asking for them
' Create Drive API service.
Dim initializer = New BaseClientService.Initializer
initializer.HttpClientInitializer = credential
initializer.ApplicationName = ApplicationName
Dim service = New DriveService(initializer)
' Define parameters of request.
Dim listRequest As FilesResource.ListRequest = service.Files.List()
listRequest.PageSize = 10
listRequest.Fields = "nextPageToken, files(id, name)"
' List files.
Dim files As IList(Of Google.Apis.Drive.v3.Data.File) = listRequest.Execute().Files
здесь код в C#:
UserCredential credential;
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 file saved to: " + credPath);
}
//I want to provide the username and password in the app so that it doesn't open a web browser asking for them
// 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;
вы можете привести пример вызова этого метода потому что я думаю, что я предоставляю неправильное значение serviceAccountCredentialFilePath. –
Я использую json-файл, однако он должен работать с файлом ключа .p12. Помните, что это должны быть учетные данные учетной записи службы, а не файл учетных данных, который вы создали ранее для Oauth2. есть разница. – DaImTo
Я использую файл client_secret.json, который я загрузил с консоли. Можете ли вы представить пример. –