Я знаю, что при авторизации запросов с помощью OAuth мы можем использовать несколько областей, чтобы запросить у пользователя определенное разрешение. Я хочу запросить разрешение на загрузку файлов с общедоступными ссылками (пользователь фактически предоставит эту ссылку).
Однако области, перечисленные в здесь, не предоставляют такой возможности. Я не хочу получать разрешение на все файлы и пугать их.
Ниже приведен код, который я использую. Есть идеи? Как вы думаете, возможно ли получить разрешение на файлы с общедоступными ссылками? Имея доступ к общей ссылке, можно использовать для этой цели?
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;
}
То, как oauth работает с диском Google, заключается в том, что вы запрашиваете доступ к учетной записи пользователя с полным приводом.
DriveService.Scope.DriveFile
Дает доступ к учетной записи пользователя, но только к файлам, которые были открыты или созданы с помощью вашего клиента.
drive.readonly предоставит вам полный доступ к их учетной записи полного привода для чтения и загрузки файлов. Невозможно ограничить доступ только к каталогу или только к группе файлов. все или ничего.
Получив доступ, вы можете искать нужные файлы, поскольку теперь у вас есть доступ к их полной учетной записи.