C#嵌入了Google云端硬盘

时间:2016-06-14 01:44:44

标签: c# google-drive-api

在不同的功能中,我希望将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电子邮件和密码,然后进行身份验证工作,如果成功,用户可以访问他们的文件。

1 个答案:

答案 0 :(得分:0)

欢迎来到开放认证的世界。对于您的应用程序访问用户数据,他们必须授予您的应用程序访问其数据或“授权”的权限。您发送的作用域用于告诉用户您的应用程序运行所需的权限。他们会弹出一个窗口,要求他们使用这些权限授权您的应用程序。一旦被授予,您就可以访问他们的数据。

要求用户输入帐户的登录名和密码称为客户端登录。 2015年,谷歌关闭了客户端登录,您无法使用登录名和密码访问其帐户。您必须使用Oauth2并请求访问,就像您的代码当前正在进行的那样。

您的代码按原样运行,并且正常运行。你不能自动授权,他们必须自己点击它。