在C#中对各种Google云端硬盘帐户进行身份验证和上传

时间:2015-03-23 15:43:56

标签: c# winforms google-drive-api

我尝试在Visual Studio 2013中创建一个C#Winforms应用程序以连接到Google云端硬盘。

我下载了Nuget软件包,并使用Google Developer页面上的示例代码创建了一个测试项目,它可以运行!我不得不去创造我的秘密和钥匙等,一切顺利。

它将我的测试文本文件上传到我的Google云端硬盘帐户。大。 在初始上传当然,身份验证打开了一个浏览器窗口,我必须授予我的应用程序权限才能访问Google云端硬盘,所有这些都没问题。

但是,我希望能够将测试文件上传到其他Google云端硬盘帐户。但无论我做什么,此测试代码只会上传到我默认的Google云端硬盘帐户,这是我从PC上访问的三个帐户之一。 我尝试在浏览器中打开Goog​​le云端硬盘,注销我的主帐户,登录其他帐户,以及浏览器打开时运行我的测试代码...但它仍然只会上传到我的默认Google默认Google驱动。

我如何选择'我想用我的代码登录的Google云端硬盘帐户?

我了解这是关于连接到经过身份验证的帐户'但我在我的电脑上使用不同的Google云端硬盘帐户进行身份验证,这没什么区别。

我的测试代码示例如下。有人可以对此有所了解吗?

在下面示例的第8行,我初始化凭据,我想如果我替换了"用户"带有我想要的目标Google云端硬盘帐户的电子邮件地址的字符串,它会上传到该帐户,但它并不关心我放在这里的内容。

UserCredential credential;

        using (var filestream = new FileStream("client_secrets.json",
            FileMode.Open, FileAccess.Read))
        {
            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(filestream).Secrets,
                new[] { DriveService.Scope.Drive },
                "user",
                CancellationToken.None,
                new FileDataStore("DriveCommandLineSample")).Result;
        }

        // Create the service.
        var service = new DriveService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "BackupApp",
        });

        Google.Apis.Drive.v2.Data.File body = new Google.Apis.Drive.v2.Data.File();
        body.Title = "My document 4";
        body.Description = "A test document 4";
        body.MimeType = "text/plain";

        byte[] byteArray = System.IO.File.ReadAllBytes("document4.txt");
        System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray);

        FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, "text/plain");
        request.Upload();

        Google.Apis.Drive.v2.Data.File file = request.ResponseBody;

0 个答案:

没有答案