【发布时间】:2017-01-11 10:01:03
【问题描述】:
我制作了一个程序,使用 google drive api 从 google drive 上的文件中读取数据。
当您第一次运行该应用程序时,它会打开一个网络浏览器,要求您使用 Google Drive 帐户登录。
我想为应用提供用户名和密码,以便它自动获取凭据,这样用户就不需要知道我的 google drive 帐户的用户名和密码。
这是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;
【问题讨论】:
标签: c# vb.net google-api google-drive-api google-api-dotnet-client