我有一个电子邮件列表.
对于每封电子邮件,我需要创建一个Google云端硬盘文件夹并与给定的电子邮件共享.
我怎么能以程序方式做到这一点?
我使用的是ASP.NET 4.0.
首先,您需要确保您具有clientid/secret应用程序并正确配置了重定向uri.对于我的情况 - 这是一个桌面应用程序:
到目前为止,您将获得clientId/secret密钥:
现在是时候编写一些代码了!
第1步 - 授权:
private async static Task<UserCredential> Auth(ClientSecrets clientSecrets)
{
return await GoogleWebAuthorizationBroker.AuthorizeAsync(clientSecrets, Scopes, "user", CancellationToken.None);
}
Run Code Online (Sandbox Code Playgroud)
第2步 - 构建google驱动器的客户端:
private static DriveService GetService(UserCredential credential)
{
return new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "MyApplicationName",
});
}
Run Code Online (Sandbox Code Playgroud)
第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;
}
Run Code Online (Sandbox Code Playgroud)
第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();
}
Run Code Online (Sandbox Code Playgroud)
最后使用整件事:
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");
}
Run Code Online (Sandbox Code Playgroud)
对于电子邮件列表,您可以在每个电子邮件的循环中创建/共享内容.
一些有用的链接:
您还需要Google.Apis.Drive.v2 nuget包
归档时间: |
|
查看次数: |
2049 次 |
最近记录: |