上传到ASP.NET中的google驱动器

时间:2014-03-04 12:08:07

标签: c# asp.net api google-drive-api

我想知道,是否有任何可用于将文件上传到谷歌驱动器的解决方案。就像我有一个应用程序,用户可以上传他们的文档。我需要为用户添加一个选项,以便将此文档上传到他们的谷歌硬盘。因此,拥有Gmail帐户的每个用户都可以将文档上传到他们的g盘。我已经尝试了一些谷歌的解决方案,但这允许将文件上传到创建此g驱动器应用程序的单个用户。你可以看到下面的代码。如果有任何面向用户的解决方案,请告诉我。

UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
               new ClientSecrets
               {
                   ClientId = "clientid",
                   ClientSecret = "key",
               },
               new[] { DriveService.Scope.Drive },
               "user",CancellationToken.None).Result;

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

        File body = new File();
        body.Title = "My document";
        body.Description = "A test document";
        body.MimeType = "text/plain";

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

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

        File file = request.ResponseBody;

3 个答案:

答案 0 :(得分:1)

您必须使用OAuth2身份验证集成代码,以便从客户端授权您的应用,并将授权令牌发送到服务器。 可以在Oauth 2.0 Documentation for .Net Client Library

中找到MVC4和Google Drive API Client Library 1.4+的更新示例

答案 1 :(得分:1)

“我尝试了一些谷歌的解决方案,但是允许将文档上传到创建此g驱动器应用的单个用户”

你确定吗?大多数已发布的Google示例应用都使用用户OAuth来访问授权用户的驱动器。只有在查看与服务帐户相关的页面时,才会上传到应用程序帐户。

答案 2 :(得分:1)

我也遇到了同样的问题。我是在第一次上传后设置_state=null来解决的。是的,每当我们点击sharetodrive时,它会一次又一次地向我们询问许可。但是需要保持约束(相关用户应该将他的文件上传到Google云端硬盘上)。