动态创建和共享Google云端硬盘文件夹

时间:2014-04-07 08:43:01

标签: asp.net google-drive-api

我有一个电子邮件列表。

对于每封电子邮件,我需要创建一个Google云端硬盘文件夹并与给定的电子邮件共享。

我怎么能以程序化的方式来做呢?

我正在使用ASP.NET 4.0。

3 个答案:

答案 0 :(得分:8)

首先,您需要确保您拥有clientid / secret应用程序并正确配置了重定向uri。对于我的情况 - 这是一个桌面应用程序:

enter image description here

到目前为止,您将获得clientId / secret密钥:

enter image description here

现在是时候编写一些代码了!

第1步 - 授权:

private async static Task<UserCredential> Auth(ClientSecrets clientSecrets)
{   
    return await GoogleWebAuthorizationBroker.AuthorizeAsync(clientSecrets, Scopes, "user", CancellationToken.None);
}

第2步 - 构建google驱动器的客户端:

private static DriveService GetService(UserCredential credential)
{
    return new DriveService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = "MyApplicationName",
    });
}

第3步 - 创建文件夹(或任何其他内容):

private static string CreateFolder(DriveService service, string folderName)
{
    var file = new File {Title = folderName, MimeType = "application/vnd.google-apps.folder"};
    var result = service.Files.Insert(file).Execute();
    return result.Id;
}

第4步 - 分享!

/// <summary>
/// Share content. Doc link: https://developers.google.com/drive/v2/reference/permissions/insert
/// </summary>  
private static void Share(DriveService service, string fileId, string value, string type, string role)
{
    var permission = new Permission {Value = value, Type = type, Role = role};
    service.Permissions.Insert(permission, fileId).Execute();
}

最后使用整件事:

static void Main(string[] args)
{
    var ClientId = "MySecredId";
    var SecretKey = "MySecretKey";

    var Scopes = new[] { DriveService.Scope.DriveFile, DriveService.Scope.Drive };

    var secrets = new ClientSecrets { ClientId = ClientId, ClientSecret = SecretKey };
    var credentials = Auth(secrets).Result;

    var service = GetService(credentials);

    var folderId = CreateFolder(service, "folderName");

    Share(service, folderId, "user@gmail.com", "user", "reader");
}

对于电子邮件列表,您可以为每个电子邮件循环创建/共享内容。

一些有用的链接:

Creating files

Sharing files

同时 您需要Google.Apis.Drive.v2 nuget package

答案 1 :(得分:4)

执行此操作的步骤首先取决于使用Google进行身份验证。完成后,您就可以访问云端硬盘API来执行您喜欢的操作。以下链接将引导您完成所有需要做的事情。

第1步:验证(在您使用ASP.NET的情况下,服务器端) https://developers.google.com/drive/web/auth/web-server

第2步:创建文件夹 https://developers.google.com/drive/web/folder

第3步:分享您的文件夹 https://developers.google.com/drive/web/manage-sharing

答案 2 :(得分:2)

请查看以下链接。它在Google Drive上有完整的课程!!

https://www.codeschool.com/courses/discover-drive