asp.net - Create and share Google Drive folders dynamically -
i have list of emails.
for each email, need create google drive folder , share given email.
how can programmically?
i using asp.net 4.0.
first of need make sure have application clientid/secret , correct redirect uri configured. case - it's desktop application:
so far you'll clientid/secret key:
now it's time write codes!
step 1 - authorization:
private async static task<usercredential> auth(clientsecrets clientsecrets) { return await googlewebauthorizationbroker.authorizeasync(clientsecrets, scopes, "user", cancellationtoken.none); }
step 2 - construct client google drive:
private static driveservice getservice(usercredential credential) { return new driveservice(new baseclientservice.initializer() { httpclientinitializer = credential, applicationname = "myapplicationname", }); }
step 3 - create folder (or other content):
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; }
step 4 - share it!
/// <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(); }
and usage of whole thing:
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"); }
for list of emails can pretty same thing creating/sharing content in loop every email have.
some usefull links:
also you'll need google.apis.drive.v2 nuget package
Comments
Post a Comment