在不同的功能中,我希望将Google云端硬盘与我的C#应用程序包含在一起,以便用户登录并访问其驱动器的文件。 我在这个网站和其他来源中研究了很多代码,并且我在以下方面取得了成功:
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云端硬盘上获取我的凭据。 此代码运行良好,但这意味着我的应用程序的每个用户都必须手动生成自己的Google Drive凭据,而我无法弄清楚如何自动执行此操作。
我的目标是为用户提供两个框,用于输入他们的Google电子邮件和密码,然后进行身份验证工作,如果成功,用户可以访问他们的文件。
答案 0 :(得分:0)
欢迎来到开放认证的世界。对于您的应用程序访问用户数据,他们必须授予您的应用程序访问其数据或“授权”的权限。您发送的作用域用于告诉用户您的应用程序运行所需的权限。他们会弹出一个窗口,要求他们使用这些权限授权您的应用程序。一旦被授予,您就可以访问他们的数据。
要求用户输入帐户的登录名和密码称为客户端登录。 2015年,谷歌关闭了客户端登录,您无法使用登录名和密码访问其帐户。您必须使用Oauth2并请求访问,就像您的代码当前正在进行的那样。
您的代码按原样运行,并且正常运行。你不能自动授权,他们必须自己点击它。