仅在文件公开共享的情况下才允许下载Google文档

时间:2019-05-18 14:37:09

标签: c# google-api google-drive-api google-oauth google-api-dotnet-client

我知道在使用OAuth对请求进行授权时,我们可以使用多个范围来请求用户的特定权限。我想请求允许下载带有公共共享链接的文件(用户实际上将提供此链接)。

但是,here中列出的范围没有提供这样的选项。我不想获得所有文件的许可并吓them他们。

下面是我正在使用的代码。有任何想法吗?您认为有可能获得具有公共链接的文件的许可吗?可以使用共享链接的访问权限吗?

private string[] Scopes = { DriveService.Scope.DriveFile};

private DriveService GetDriveServiceInstance()
{
    UserCredential credential;

    using (var stream = new FileStream("Services/credentials.json", FileMode.Open, FileAccess.Read))
    {
        string credPath = "token.json";
        credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
              GoogleClientSecrets.Load(stream).Secrets,
              Scopes,
              "user",
              CancellationToken.None,
              new FileDataStore(credPath, true)).Result;
          Console.WriteLine("Credential file saved to: " + credPath);
     }

     BaseClientService.Initializer bcs = new BaseClientService.Initializer();
     bcs.HttpClientInitializer = credential;
     bcs.ApplicationName = "synergy";

     DriveService service = new DriveService(bcs);
     return service;
    }

1 个答案:

答案 0 :(得分:2)

oauth与Google云端硬盘配合使用的方式是您请求访问用户的完整硬盘帐户。

  

DriveService.Scope.DriveFile

enter image description here

将授予访问用户驱动器帐户的权限,但仅授予使用客户端打开或创建的文件的权限。

enter image description here

drive.readonly将使您能够完全访问其完整的驱动器帐户,以读取和下载文件。没有办法将您的访问权限限制为仅一个目录或一组文件。全部或全部。

具有访问权限后,您便可以搜索所需文件,因为现在可以访问其完整帐户。